poj1019 n的位数+规律
来源:互联网 发布:mac 更改ruby路径 编辑:程序博客网 时间:2024/06/05 09:31
题目链接:http://poj.org/problem?id=1019
题目大意:给你一个串112123123412345……问第n位的数字是多少。n<int
思路:首先我们分析这个字符串可以看出它是由这些子串组成的,1,12,123,1234,12345......
这样我们可以每个子串单独分析,我们可以看出来第i个子串比第i-1个子串多一个数i,数字i的长度为log10(i)+1,也就是是说第i个子串比第i-1个子串的长度长log10(i)+1,这样通过递推我们可以求出来每个子串的长度,直接用n减就可以,当n小于0说明第n位就在这个串里面,然后再对该串的每一个数字的位数相减,最后可以判定n在哪个数字中,分解一下就好了
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <fstream>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <vector>#include <map>#include <set>#include <iomanip>using namespace std;//#pragma comment(linker, "/STACK:102400000,102400000")#define maxn 100050#define MOD 1000000007#define p 1000000007#define mem(a , b) memset(a , b , sizeof(a))#define LL long long#define ULL unsigned long long#define FOR(i , n) for(int i = 1 ; i<= n ; i ++)typedef pair<int , int> pii;const long long INF= 0x3fffffff;int n , m , t;int num[maxn];void init(){ num[0] = 0; num[1] = 1; for(int i = 2 ; i < maxn ; i ++) { num[i] = (num[i-1] + log10(i) + 1); }}int main(){ init(); scanf("%d" , &t); while(t--) { scanf("%d" , &n); int i = 1; while(n > 0) { n -= num[i++]; } i--; if(n == 0) { printf("%d\n" , i % 10); continue; } n += num[i]; // cout << n << endl; int tmp = n; for(i = 1 ; i <= tmp ; i ++) { n -= (int)(log10(i) + 1); if(n <= 0) break; } // cout << n << endl; if(n == 0) { printf("%d\n" , i % 10); continue; } n += (log10(i) + 1); // cout << n << " " << i << endl; int ans[15]; int id = 0 ; tmp = i; while(tmp > 0) { ans[id++] = tmp % 10; tmp /= 10; } cout << ans[id-n] << endl; } return 0;}
有一个字符串的形
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
有一个字符串的形式是这样的112123123412345123456123456712345678123456789123456789101234567891011123456789101112..........
现在要求你写出他的第n位上的数字是什么,注意是数字而不是数.
1 ≤n ≤ 2147483647。(POJ1019)
- poj1019 n的位数+规律
- n^n的第一位数
- N^N的第一位数
- N!的位数
- 求N!的位数
- 求N!的位数
- N!的位数
- n!结果的位数
- 计算n!的位数
- 求N!的位数
- n!的位数
- N!的位数
- N!的位数
- n的阶乘的位数
- 求大数n!的位数
- PKU1423:求n!的位数。
- POJ_1423_Big Number(n!的位数)
- 高精度之 N!的位数
- 18、Dom--childNodes和nodeType的结合使用
- Android的ScrollView示例
- 设置MathType标签名称的方法
- UIDocumentInteractionController浏览文件
- bower
- poj1019 n的位数+规律
- 现代通讯类产品生产制造流程(二)
- discover meteor实例代码第9章关于session is no defined的处理
- 扫描指定目录下所有图片文件
- PowerPC介绍
- linux命令
- linux使用tcpdump抓包工具抓取网络数据包,多示例演示
- JAVA数据结构
- 剑指Offer----面试题12:打印1到最大的n位数