zcmu-1131: 第七章:早知道,是夢一場(思維題)
阿新 • • 發佈:2018-11-24
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 118 Solved: 44
[Submit][Status][Web Board]Description
畢業,這個傷感的季節,總是伴著不捨。自閉而又敏感、自尊的陳孝正卻在畢業的時候又選擇了出國,放棄了鄭微。此刻的鄭薇,感覺像是夢一場回到了原點。
鄭薇就像是這個數:102564,渡過了四年的大學時光,102564*4=410256,只是自己右移了一位,沒有其他的不同。暫且我們把這樣一類數叫做鄭薇數,請你研究一下,如果給定兩個數n和k,怎樣找到一個的最小的鄭薇數,使他的最右位恰好是數字k,且乘以n以後的數字等於自身數字迴圈右移一位。
Input
第一行是數字t,表示接下來有幾組資料,每組資料單獨成行,包括兩個整數n和k(1<=n<=9&&1<=k<=9)。
Output
每組資料分別輸出一個整數,且要單獨成行,如果最小的鄭薇數(且她的最右位恰好是數字k)存在,則輸出他,否則輸出0
Sample Input
1 4 5
Sample Output
128205
像我這種思維混亂型選手想了整整兩天...還是學習了同學的程式碼之後再整明白的。。。
k*n 算出的第一位個位的結果,就是上面乘數的十位上的數字,一個個推上去就好了(我推了很久)
示意圖如下:
#include<stdio.h> #include<stdlib.h> #include <string.h> int main() { int t,n,k; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); int i = 1,jw = 0; int a[10000] = {0}; a[0] = k; while(1) { a[i] = a[i-1] * n + jw; //printf("a[%d] = %d ",i,a[i]); if(a[i] == k) break; jw = a[i] / 10; a[i] %= 10; i++; } if(a[i-1] == 0) printf("0"); else for(int j = i-1;j >= 0;j--) printf("%d",a[j]); puts(""); } return 0; }