NYOJ:458小光棍数
来源:互联网 发布:两组数据平均值比较 编辑:程序博客网 时间:2024/04/29 21:31
小光棍数
- 描述
- 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?
- 输入
- 有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。
- 输出
- 输出第m个小光棍数。
- 样例输入
11
- 样例输出
471
#include<stdio.h>#include<string.h>int main(){int num,sum=0,i,len,m2[15];char m1[15];scanf("%d",&num);getchar();while(num--){gets(m1);len=strlen(m1);for(i=0;i<len;i++)m2[i]=m1[i]-'0';m2[len-1]=m2[len-1]-1;for(i=len-1;i>0;i--){if(m2[i]<0){m2[i]=m2[i]+10;m2[i-1]=m2[i-1]-1;}}for(i=0;i<len;i++)if(m2[i])break;for(;i<len;i++)printf("%d",m2[i]);printf("471\n");}return 0;}解题思路:发现一个数的三次方最后三位为111的数结尾都含有471.所以第一个小光棍数是0471;第二个小光棍数是1471;第三个小光棍数是2471;。。。那么第n个小光棍数是(n-1)471;注意这里的(n-1)代表的是个串;因为最后m会很大,我们将这个数当成字符串输入,然后给每一位都放入整形数组里面,然后求m-1;如要求第1000个光棍数,第1000个光棍数为999471则字符数组m1为{'1','0','0','0'}然后每位都减去字符'0',放到整型数组里面则整型数组m2为{1,0,0,0}然后从最后一位开始减去1则m2[3]=m2[3]-1=-1;m2[3]<0m2[3]=m2[3]+10=-1+10=9;m2[2]=m2[2]-1=-1;m2[2]<0m2[2]=m2[2]+10=-1+10=9;m2[1]=m2[1]-1=0-1=-1;m2[1]<0m2[1]=m2[1]+10=-1+10=9;m2[0]=m2[0]-1=1-1=0此时整型数组m2中的值变为{0,9,9,9}然后将整型数组m2从第一位非零位全部输出,在之间printf("471\n");即为答案。
0 0
- NYOJ-458:小光棍数
- NYOJ-小光棍数-458
- nyoj-458-小光棍数
- NYOJ 458 小光棍数
- nyoj-458-小光棍数
- NYOJ-458 小光棍数
- nyoj 458 小光棍数
- nyoj-458-小光棍数
- NYOJ--458 小光棍数
- NYOJ 458 小光棍数
- NYOJ-458:小光棍数
- nyoj 458 小光棍数
- NYOJ:458小光棍数
- NYOJ-458 小光棍数
- NYOJ 458题 小光棍数
- nyoj题目458:小光棍数
- NYOJ【458】小光棍数【思维】
- nyoj 458 小光棍数 【同余定理】
- linux /etc/fstab
- multipart/form-data
- tarjan算法不是很懂先mark一下。
- eclipse中JRE System library 和web app libraries
- 梯度优化算法总结
- NYOJ:458小光棍数
- php四大安全策略
- BroadcastReceiver学习(02)之有序广播
- Leetcode 38 Count and Say
- Android OpenGL ES 简明开发教程_添加颜色
- 正确性、健壮性、可靠性、效率、易用性、可读性(可理解性)、可扩展性、可复 用性、兼容性、可移植性
- 23种设计模式
- 转化率低?从着陆页的这5点考虑解决
- php中time()与$_SERVER[REQUEST_TIME]用法区别