POJ 1019 数学题
#include <cstdio>
#include <cstring> using namespace std; int sum[];
//sum[i]表示尾数为i的组最大可达到的数字个数
void init()
{
sum[] = ;
sum[] = ;
sum[] = ;
sum[] = ;
sum[] = ;
sum[] = ;
sum[] = ;
} //找到最后对应的组数属于的范围是在多少位的整数上,返回整数的位数
int get_bit(int &n)
{
for(int i = ; i< ; i++){
if(n > sum[i] && n <= sum[i+])
{
n -= sum[i];
return i+;
}
}
return -;
}
//返回g这个组中对应的数字的个数
int get_num_of_group(int g)
{
int t = ;
int k = ;
int ret = ;
while(g >= t){
ret += t/**k;
t *= ;
k++;
}
ret += (g - t/ + ) * k;
return ret;
} int main()
{
int T;
//cout<<get_num_of_group(100)<<endl;
scanf("%d" , &T);
init();
while(T--){
int n;
scanf("%d" , &n);
int group = ;
int cnt = ;
//group表示第几组,cnt表示对应组中含有的数字的个数
while(){
if(n <= cnt) break;
n -= cnt;
group++;
cnt = get_num_of_group(group);
}
//cout<<"group"<<group<<" "<<n<<endl;
int t = get_bit(n);
//cout<<"t " <<t<<endl;
int st;
//st表示从几位数字开始找起,如st = 10,表示最后这个点属于10-99范围
if(t < ) st = , t = ;
else
{
st = ;
for(int i= ; i<=t- ; i++)
st *= ; }
//cout<<"st " <<st<<endl;
while(n > t){
n -= t;
st++;
}
n = t + - n;
int ans = st%;
for(int i= ; i<=n ; i++){
ans = st%;
st /= ;
}
printf("%d\n" , ans);
}
// cout<<9 + 2*90 + 3*900<<endl;
return ;
}
POJ 1019 数学题的更多相关文章
- Poj 1019 Number Sequence( 数据分析和操作)
一.题目大意 有这样一个序列包含S1,S2,S3...SK,每一个Si包括整数1到 i.求在这个序列中给定的整数n为下标的数. 例如,前80位为1121231234123451234561234567 ...
- poj 1019 Number Sequence 【组合数学+数字x的位宽函数】
题目地址:http://poj.org/problem?id=1019 Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total ...
- POJ 1019:Number Sequence 二分查找
Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36013 Accepted: 10409 ...
- POJ 1019 Number Sequence
找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- poj 1019
懂了 题意是给一串 1 12 123 1234 12345 123456 ....这样的数字问第 i个数字是多少 Sample Input 2 8 3 Sample Output 2 2 #inclu ...
- POJ 1019 Number Sequence 解读
这是一个看似简单,其实很难受. 本来我想发挥它的标题轨道基础.没想到反被消遣-_-|||. 看它在个人基础上,良好的数学就干脆点,但由于过于频繁,需求将被纳入全,因此,应该难度4星以上. 方法就是直接 ...
- Number Sequence POJ - 1019 递推 数学
题意 1 12 123 1234 12345 ....这样的序列 问第n位数字是几 是数字! 1-9! 思路:递推关系 主要是位数的计算 用a[i]=a[i-1]+(int)log10((do ...
- POJ - 1019 Number Sequence (思维)
https://vjudge.net/problem/POJ-1019 题意 给一串1 12 123 1234 12345 123456 1234567 12345678 123456789 1234 ...
- Number Sequence(poj 1019)
题意: 有一串数字串,其规律为 1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011 1234 ...
随机推荐
- bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士【bfs】
bfs预处理出每个点s和t的距离d1和d2(无法到达标为inf),然后在若干灌木丛格子(x,y)里取min(d1[x][y]+d2[x][y]) /* 0:贝茜可以通过的空地 1:由于各种原因而不可通 ...
- weiphp插件开发注意
插件命名要规范,插件名文件名,控制器名,模型名要以大写开头.不然的话会有惊喜!╮(╯▽╰)╭
- AutoCAD C# 利用反射导出所注册的命令
主函数导出某一程序集AutoCAD 注册命令 /// <summary> ///提取所有的命令 /// </summary> /// <param name=" ...
- Linux安装MySQL标准教程
导读: 本文主要介绍 CentOS 系统二进制安装 MySQL 5.7.23 版本的安装步骤,其他版本安装过程相似. 1.前置准备 卸载旧版MySQL 查看rpm包 rpm -qa|grep mysq ...
- datatable-bootstrap 基本配置
function doSearch() { if(dtable!=null){ dtable.fnClearTable(0); dtable.fnDraw(); // 重新加载数据 }else{ dt ...
- 二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment
题目传送门 /* 题意:问有几个区间最大值-最小值 < k 解法1:枚举左端点,二分右端点,用RMQ(或树状数组)求区间最值,O(nlog(n))复杂度 解法2:用单调队列维护最值,O(n)复杂 ...
- spring-redis-data的一个坑
事故原因: 运维报告redis内存直线上升,然后查询发现都是setrange操作,review代码,没法发现setrange操作 代码如下: redisTemplate.opsForValue().s ...
- sql 所有数据表中 插入字段
declare @tablename varchar(200)declare @sql varchar(2000)declare cur_t cursor forselect name from sy ...
- Mysql动态查询
if条件查询 格式: <if test=”条件判断”> 添加到sql的语句 </if> where标签 简化SQL语句中WHERE条件判断 智能处理and和or 如果使用几个i ...
- (2)HTML元素与属性(已入垃圾框)
HTML元素 开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag) HTML 文档由嵌套的 HTML 元素构成 以上实例包含了七个 HTML 元素 &l ...