Problem G: 圆周率

Description

YT大学附小举办背诵圆率 PI 的比赛。谁背的正确的位数越多,谁为胜者。很多小学生背的位数很多,但是往往会有少数位置的数是错误的。为了快速加测出错误的圆周率,将圆周率 PI 小数点后的数字求模进行简单验证。
例如:某学生背的圆周率为 3.15,则 1510 mod 9 = 6,可以初步判定该学生背的圆周率错误。
数有不同的进制表示,比如二进制、八进制、十进制等。现在给你一个任务,给定一个 n 进制,要它对 n-1 求模,比如:
             782910 mod 9 =  8
             377777777777777738 mod 7 =6
             1234567 mod 6 =3
( 注意: 377777777777777738=112589990684261910   123456=2287510 )
你的任务是读入一些不同进制的数,求模。

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<cstdio>
#include<cstring>
char  s[999999];
int n;
int main()
{
     int t,k;
     scanf ( "%d" ,&n);
     while (n--)
     {
         scanf ( "%d %d %s" ,&t,&k,&s);
         int len= strlen (s);
         int w=0;
         for ( int i=0;i<len;i++)
         {
             w*=k;
             w+=s[i]- '0' ; //The process of simulation
             w%=(k-1);
         }
         printf ( "%d %d\n" ,t,w);
     }
     return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Loganer

感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值