[刷题] PTA 7-42 整除光棍
模拟除法
1 #include <stdio.h> 2 int main() 3 { 4 char a[1000];//创建存表 5 int len=0,count=0; 6 int n; 7 int t=1; 8 scanf("%d",&n); 9 while(1) 10 { 11 count++; 12 if(len||t/n)//商第一位为0,不存入数组中 13 { 14 a[len]='0'+t/n;//把数字变为字符存储 15 len++; 16 } 17 t%=n;//取余数 18 if(t==0)//判断余数是否为零,余数为0结束 19 { 20 21 a[len]='\0';//输入数组终止符 22 printf("%s %d",a,count); 23 break; 24 } 25 t=t*10+1; 26 } 27 return 0; 28 }
分析:
1、要除的大数可能超过int或long的范围,所以要用string存储
2、模拟除法:把手算除法每一步进行分解,存储每步的计算结果和余数即可,这样每次处理的就是一个很小的数