问题 E : 坤哥的难题 (题目本来觉得很难,但是数据很水,居然简单的for就AC)
2014-03-01 13:51
253 查看
1、http://sdjzu.acmclub.com/index.php?app=problem_title&cid=1160&problem_id=E
2、题目:
内存限制:256 兆
特殊判题: 否
提交:16
解决: 7
Num 4digits square 6digits or fewer
65554 5555 30858025 858025
858025 5802 33663204 663204
663204 6320 39942400 942400
942400 4240 17977600 977600
977600 7760 60217600 217600 <——
|
217600 1760 3097600 97600 |
97600 9760 95257600 257600 |
257600 5760 33177600 177600 |
177600 7760 60217600 217600
—— |
*** 提示已隐藏,点击上方 [+] 可显示 ***
提示[-]
3、AC代码
2、题目:
问题 E : 坤哥的难题
时间限制:1 秒内存限制:256 兆
特殊判题: 否
提交:16
解决: 7
题目描述
八百年才能出现的好事接二连三的发生在了坤哥头上,可是你们总是让他的好事泡汤。坤哥不愿意了,他决心考考你们,先给你一个六位数,然后曲这个六位数中间四位,然后在让这个四位数平方,得到的这个数在取它的后六位。如此反复,一直做到找到循环节。例如给你65554这个数;Num 4digits square 6digits or fewer
65554 5555 30858025 858025
858025 5802 33663204 663204
663204 6320 39942400 942400
942400 4240 17977600 977600
977600 7760 60217600 217600 <——
|
217600 1760 3097600 97600 |
97600 9760 95257600 257600 |
257600 5760 33177600 177600 |
177600 7760 60217600 217600
—— |
输入格式
多组测试样例。一个六位数。输出
输出循环节的第一个数,循环节的大小和需要几次才能发现循环节。样例输入
655554样例输出
217600 4 9
提示[+]
*** 提示已隐藏,点击上方 [+] 可显示 ***提示[-]
3、AC代码
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int num[1000005]; int sqr[1000005]; int f[1000005]; int s[1000005]; int getFour(int a) { if(a==0) return 0; int c[10]; //其实比赛的时候就是错在c数组没有每次赋初值,一开始觉得没什么的,上下次不会影响,实际上上下样例之间是没有什么影响, //但是如果c没有初始值为0,那么我们在求sum的时候就不能保证c都是0,用到的可能就是一个随机值 memset(c,0,sizeof(0)); int i=1; while(a) { c[i++]=a%10; a/=10; } int sum=0; sum=c[2]+c[3]*10+c[4]*100+c[5]*1000; return sum; } int sq(int a) { return a*a; } int getSix(int a) { if(a==0) return 0; int c[10]; memset(c,0,sizeof(c)); int i=1; while(a) { c[i++]=a%10; a/=10; } int sum=0; sum=c[1]+c[2]*10+c[3]*100+c[4]*1000+c[5]*10000+c[6]*100000; return sum; } int find(int a,int n) { for(int i=0;i<=n;i++) { if(s[i]==a) return i; } return -1; } int main() { int a; while(scanf("%d",&a)!=EOF) { memset(num,0,sizeof(num)); memset(sqr,0,sizeof(sqr)); memset(s,0,sizeof(s)); memset(f,0,sizeof(f)); int i=0; num[0]=a; while(1) { f[i]=getFour(num[i]); sqr[i]=sq(f[i]); s[i]=getSix(sqr[i]); //printf("%d %d %d %d %d\n",i,num[i],f[i],sqr[i],s[i]); int ii=i+1; num[ii]=s[i]; int ans; ans=find(s[i],i-1); if(ans!=-1) { printf("%d %d %d\n",s[i],i-ans,i+1); break; } i++; } } return 0; }
相关文章推荐
- ZOJ 1005题解 这题数据有点问题没有按照题目要求也能被AC,我无语了。
- 能源物联网中如何处理上报的大量数据问题的思路分析(题目有点长,但是我不介意它更长)--后续会继续补充
- 能源物联网中如何处理上报的大量数据问题的思路分析(题目有点长,但是我不介意它更长)--后续会继续补充
- 解决IE缓存的问题,测试时切换用户,但是数据没有改变
- 简单编程题目连载(十一)——0-1背包问题
- 关于mvc中@Html.DropDownListFor和@Html.DropDownList默认值无法选中问题简单总结
- 简单解决返回上一个Activity中的adapter数据刷新问题
- 关于mvc中@Html.DropDownListFor和@Html.DropDownList默认值无法选中问题简单总结
- JQUERY AJAX请求成功,返回了数据,但是不进SUCCESS的问题
- 25.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。AC
- 'UserInfoBLL' node cannot be resolved for the specified context [MVC展示数据.Controllers.LoginController]问题解决
- 抛出一个简单 但是极易忽略的类的初始值问题~
- Navicat for MySQL and dos 在win7 64 位系统中遇到的问题,以及简单操作
- 简单编程题目连载(七)——经典台阶问题
- Vue v-for嵌套数据渲染问题
- poj3169-所谓的差分约束,但是感觉题目各种问题
- arcgis for android 中本地数据渲染重置的问题
- 简单处理BarTender中的数据合并问题
- oreacle数据库为utf8,但是plsql还是插入数据中文乱码问题
- Java 简单解决springmvc获取properties文件里面中文内容出现论码问题(我遇到的问题是数据提交检验时返回的错误提示出现乱码)