Problem G: 圓周率
阿新 • • 發佈:2018-05-06
rip b- pri bbs TP pid 二進制 can n-1
Submit: 155 Solved: 99
[Submit][Status][Web Board]
mod 9 = 8
377777777777777738 mod 7 =6
1234567 mod 6 =3
(註意:377777777777777738=112589990684261910 1234567 =2287510 )
你的任務是讀入一些不同進制的數,求模。
Problem G: 圓周率
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 155 Solved: 99
[Submit][Status][Web Board]
Description
YT大學附小舉辦背誦圓率 PI 的比賽。誰背的正確的位數越多,誰為勝者。很多小學生背的位數很多,但是往往會有少數位置的數是錯誤的。為了快速加測出錯誤的圓周率,將圓周率 PI 小數點後的數字求模進行簡單驗證。 例如:某學生背的圓周率為 3.15,則1510 mod 9 = 6,可以初步判定該學生背的圓周率錯誤。 數有不同的進制表示,比如二進制、八進制、十進制等。現在給你一個任務,給定一個n進制,要它對n-1求模,比如: 782910
Input
第一行表示為整數P(1≤P≤1000),表示一共的測試數據組數。 每組測試測試數據一行,由三個數組成,第一個數表示組號,第二個數B(2≤B≤10),表示B進制,第三個數D表示要求模的數,D的位數不超過10,000,000位。
Output
每組測試數據一行,每一個數為組號,第二個為 D mod (B-1)
Sample Input
6 1 10 7829 2 7 12345 3 6 432504023545112 4 8 37777777777777773 5 2 101011111111110000000000000000000011111111111111111111111 6 10 145784444444444457842154777777777547845993
Sample Output
1 8 2 3 3 1 4 6 5 0 6 6
#include<stdio.h> #include<string.h> int main() { int p,k,t; int now=0; char str[1000005]; scanf("%d",&p); while(p--) { scanf("%d%d%s",&t,&k,&str); now=0; int i; int len=strlen(str); for(i=0;i<len;i++) { now=now*k; now=now+str[i]-‘0‘; now=now%(k-1); } printf("%d %d\n",t,now); } }
Problem G: 圓周率