P8652 [蓝桥杯 2017 国 C] 小数第 n 位
题目描述
我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个000,它们就有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第nnn位开始的333位数。
输入格式
一行三个整数:aaa,bbb,nnn,用空格分开。aaa是被除数,bbb是除数,nnn是所求的小数后位置(0<a,b,n<1090<a,b,n<10^90<a,b,n<109)
输出格式
一行333位数字,表示:aaa除以bbb,小数后第nnn位开始的333位数字。
输入输出样例 #1
输入 #1
1 8 1输出 #1
125输入输出样例 #2
输入 #2
1 8 3输出 #2
500输入输出样例 #3
输入 #3
282866 999000 6输出 #3
914说明/提示
时限 1 秒, 256M。蓝桥杯 2017 年第八届国赛
C++实现
#include<cstdio>typedeflonglongll;inlineintksm(inta,intb,intmod){intret=1;while(b){if(b&1)ret=(ll)ret*a%mod;a=(ll)a*a%mod;b>>=1;}returnret;}intmain(){inta,b,n;scanf("%d%d%d",&a,&b,&n);intt=(ll)a*ksm(10,n-1,b)%b;printf("%d",(int)(t*10ll/b));t=t*10ll%b;printf("%d",(int)(t*10ll/b));t=t*10ll%b;printf("%d\n",(int)(t*10ll/b));return0;}后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容