poj1047 2010.2.17
2016-02-05 14:19
309 查看
poj1047 2010.2.17
分析:
有两件事要做
1. 高精度,单*多
2. 判断是不是循环的
一次ac鸟
分析:
有两件事要做
1. 高精度,单*多
2. 判断是不是循环的
一次ac鸟
#include <stdio.h> #include <string.h> #define MAXN 200+10 int num[MAXN],n,head,tail,add[MAXN]; char chnum[MAXN]; void change(); int doit(); int okok(); int okok() { int i,j,flag; for(i=1;i<=n+n;i++) { flag=0; for(j=1;j<=n;j++) if (num[i+j-1]!=add[j]) { flag=1; break; } if (!flag) return 1; } return 0; } int doit() { int mid[MAXN]; int i,j; memcpy(mid,num,sizeof(num)); for(i=n+1;i<=n+n;i++) num[i]=num[i-n]; // for(i=1;i<=n+n;i++) // printf("%d",num[i]); // printf("\n"); for(i=2;i<=n;i++) { memset(add,0,sizeof(add)); for(j=1;j<=n;j++) { add[j]+=mid[j]*i; add[j+1]=add[j]/10; add[j]%=10; } if (add[n+1]) return 0; // for(int k=1;k<=n;k++) // printf("%d",add[k]); // printf(" %d\n",add[n+1]); if (!okok()) return 0; } return 1; } void change() { memset(num,0,sizeof(num)); int i; for(i=1;i<=n;i++) num[n+1-i]=chnum[i-1]-48; // for(i=1;i<=n;i++) // printf("%d %d\n",i,num[i]); } void main() { while (scanf("%s",chnum)!=EOF) { n=strlen(chnum); change(); if (doit()) printf("%s is cyclic\n",chnum); else printf("%s is not cyclic\n",chnum); } }
相关文章推荐
- [转] MySQL5绿色版安装教程
- include<>与include""的区别
- 类
- Java程序员需要了解的8个开发工具
- 深度优先搜索的学习
- poj1419——Graph Coloring(dfs)
- [转] 转载:一条网线,不用路由器,多台笔记本电脑共享上网
- 深入浅出Windows BATCH
- HDU 1028 (dp)
- poj1273 2010.2.17
- 固定导航(Sticky nav)
- C++暑期学习笔记
- 《HTTP权威指南》学习笔记——URL和资源
- Google protocol-buffers java版--简单使用
- iOS开发之苹果公司联系邮箱大全
- HDU 1018 big numbe
- 计算机网络的特点及性能
- win10、win7系统64位oracle11g安装教程以及32位plsql连接教程
- poj1221 2010.2.17
- 项目中遇到的问题