开始刷题,感觉代码量和基础太渣了,导致数据结构不会,重头慢慢刷吧~
1、题目
输入样例:
31
输出样例:
3584229390681 15
2、代码
#include<stdio.h>
int main(){
int x;
scanf("%d",&x);
int cnt=0;
int a=0,c=0,d;
while(a<x){
a=a*10+1;
cnt++;
}
while(1){
printf("%d",a/x);
a%=x;
if(a==0) break;
a=a*10+1;
cnt++;
}
printf(" %d",cnt);
return 0;
}
3、讨论
这个题很有意思的哈,本来以为就是个 “简单” 题,用循环不断乘10加1,果然有两个 test
超时了,然后,,,就没有然后了。
#include<stdio.h>
#include<math.h>
int main(){
int x;
scanf("%d",&x);
int i;
int cnt=0;
long long int a=0,c=0,d;
while(1){
a=a*10+1;
cnt++;
c=a/x;
d=a%x;
if(d==0){
printf("%lld %d",c,cnt);
break;
}
}
// printf("%lld %d",c,cnt);
return 0;
}
上网一搜,发现了一个奇淫技巧,就是模拟除法的运行,即:
什么意思呢?
就是只先生成一部分光棍数,在例子里是111,然后进行除法,相当于是从最高位开始计算结果(手写除法运算的步骤),当余数不为0,就在余数末尾加1当除数(不是加法的加,而是拼凑的意思,即1“加”1,是11)。
妙啊!!!