Problem G: 圆周率

Posted 青衫客36

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Problem G: 圆周率相关的知识,希望对你有一定的参考价值。

Problem G: 圆周率

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 155  Solved: 99
[Submit][Status][Web Board]

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   1234567 =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<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: 圆周率的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#代码解释圆周率

求用python计算圆周率小数点后五万位的最快的方法,需要代码,谢谢

PHP 代码片段

bzoj 1043 下落的圆盘 —— 求圆心角圆周长

PTA乙级 (1049 数列的片段和 (20分))

3.4 for实现循环结构 --- 3.6 函数文件的定义与调用