開始刷題,感覺代碼量和基礎太渣了,導致數據結構不會,重頭慢慢刷吧~
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)。
妙啊!!!