Digit【2015 湘潭大学程序设计比赛(Internet)】
2015-04-27 10:23
267 查看
Click to view the problem
思路:这道题我就是直接算,给定的字符串是从1开始的,可以确定有9个一位数,90个两位数,900个三位数,9000个四位数…….so,计算一下所给的n包含的有几位数,并计算出最后一个数。具体步骤看代码。。。
思路:这道题我就是直接算,给定的字符串是从1开始的,可以确定有9个一位数,90个两位数,900个三位数,9000个四位数…….so,计算一下所给的n包含的有几位数,并计算出最后一个数。具体步骤看代码。。。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { __int64 t, n, k; __int64 sum, l; //没用长整形会爆掉 __int64 x, pp, i; int ans, a[10]; scanf("%I64d", &t); while(t--) { scanf("%I64d", &n); for(i = 9,k = 1; ; i = i * 10) { sum = i * k; if(n <= sum) break; k++; //计算出数字位数 n -= sum; } if(n / k == 0) x = i / 9; else x = (n/k) + i / 9 - 1; //计算出第n位所在的那个数 if(n % k == 0) ans = x % 10; //如果能整除,证明是数的最后一位 else //将 { pp = (n % k) - 1; //所求的数字的位数 i = k - 1; if(n % k != 0) x++; while(1) //将x拆开存到数组 { if(x == 0) break; a[i] = x % 10; x /= 10; i--; } ans = a[pp]; } printf("%d\n", ans); } return 0; }
相关文章推荐
- 2015 湘潭大学程序设计比赛(Internet) 全解析 + AC代码
- 2015 湘潭大学程序设计比赛(Internet)--E题--烦人的异或
- 2015 湘潭大学程序设计比赛(Internet)部分题解,其中有一个题与NYOJ1057很像,贪心过~~
- 2015 湘潭大学程序设计比赛(Internet)H题-括号匹配
- 2015 湘潭大学程序设计比赛(Internet)--G题-人生成就
- 2015 湘潭大学程序设计比赛(Internet)Problem D:最小的数
- 2015 湘潭大学程序设计比赛(Internet)--D题-最小的数
- 2015 湘潭大学程序设计比赛(Internet)--D题-最小的数
- 2015 湘潭大学程序设计比赛(Internet)
- 2013年湘潭大学程序设计比赛(Internet) D题 F题 题解
- 2013年湘潭大学程序设计比赛(Internet)部分解题报告
- 第八届湘潭大学程序设计比赛(Internet) Report
- 2008湘潭大学程序设计比赛解题报告
- 第八届湘潭大学程序设计比赛A题
- 2013年湘潭大学程序设计比赛
- 2015“嘉杰信息杯”中国大学生程序设计比赛(湖南)暨湘潭市第七届大学生程序设计比赛
- 第八届湘潭大学程序设计比赛(题解)
- 第八届湘潭大学程序设计比赛 Problem C Cipher Lock
- 第八届湘潭大学程序设计比赛 c题
- Digit(湘潭大学比赛)