首页 > 代码库 > POJ 1047 Round and Round We Go
POJ 1047 Round and Round We Go
https://vjudge.net/problem/POJ-1047
题意:
给一个整数,它的长度为n,从1开始一直到n和该整数相乘,判断每次结果是否和原来的整数是循环的。
思路:
大整数的乘法。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 #include<vector> 7 using namespace std; 8 9 char s[65];10 int num[65];11 int temp[65];12 int n;13 14 bool cacl(int m)15 {16 int t = 0;17 for (int i = 0; i < n; i++)18 {19 temp[i] = (num[i] * m + t) % 10;20 t = (num[i] * m + t) / 10;21 }22 if (t>0) return false;23 return true;24 }25 26 bool judge()27 {28 for (int i = 0; i<n; ++i)29 {30 int k = 0;31 if (temp[i] == num[0])32 {33 while (k<n &&num[++k] == temp[(i+k) % n]);34 if (k == n) return 1; 35 }36 }37 return 0;38 }39 40 int main()41 {42 //freopen("D:\\txt.txt", "r", stdin);43 while (gets(s))44 {45 memset(num, 0, sizeof(num));46 n = strlen(s);47 for (int i = n - 1; i >= 0; i--)48 {49 num[n - 1 - i] = s[i] - ‘0‘;50 }51 bool flag = false;52 for (int i = 2; i <= n; i++)53 {54 if (cacl(i))55 {56 if (!judge())57 {58 printf("%s is not cyclic\n", s);59 flag = true;60 break;61 }62 }63 else64 {65 printf("%s is not cyclic\n", s);66 flag = true;67 break;68 }69 }70 if (!flag)71 printf("%s is cyclic\n", s);72 }73 return 0;74 }
POJ 1047 Round and Round We Go
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。