AtCoder Beginner Contest 174 比赛人数9817
AtCoder Beginner Contest 174 C Repsept 特殊的高精度除
总目录详见https://blog.csdn.net/mrcrack/article/details/104454762
在线测评地址https://atcoder.jp/contests/abc174/tasks/abc174_c
题目大意:给定一个数k,若能找到777...7形式是其倍数,输出777...7中7的个数。(借助样例,以及手工运算,才弄懂了题意。)
基本思路:模拟过程中,发现是 特殊的高精度除.
样例模拟如下:
101
4
1.7%101=7
2.7*10+7=77,77%101=77
3.77*10+7=777,777%101=70
4.70*10+7=707,707%101=0
至此共计有4个7.
进行了一系列数据的模拟,发现 偶数找不到对应的777...7,个位是5的k找不到对应的777...7,需特判。
AC代码如下:
#include <stdio.h>
int main(){
int k,cnt,a;
scanf("%d",&k);
if(k%2==0||k%10==5){printf("-1\n");return 0;}//偶数找不到对应的777...7,个位是5的k找不到对应的777...7,需特判
a=7,cnt=1;//cnt统计7出现的个数
while(1){//特殊的高精度除
if(a%k==0)break;
a%=k,a=a*10+7,cnt++;
}
printf("%d\n",cnt);
return 0;
}