【题意】1020题目意思很简单,给出1个大数(位数<=1000)和n个个位除数,输出每个取模的结果。

【分析】根据题意,我们都知道即使是long long这样的整型也存不下,只能选择字符串来存储。记为BigInteger[1...N],取模的过程和我们做除法的过程一样,从高位开始,依次得到的个位余数作为下一次除数的十位,依此类推直到字符串遇到结束符'\0'

【难点】1、构建字符串表示大整数   2、从高位开始取余数时整型和字符型的转化  3、控制流程防止Time Out

【代码实现-V1】

#include<stdio.h>
int main()
{int N,T;char BigInteger[100][1001];int num[100];int divNum[100][100];scanf("%d",&T);for(N = 0 ; N < T ; N++){int i;scanf("%d",&num[N]);for(i = 0 ; i < num[N] ; i++){scanf("%d",&divNum[N][i]);}fflush(stdin);gets(BigInteger[N]);}for(N = 0 ; N < T ; N++){char* BigInt = BigInteger[N];         //大整数int i,total = num[N];         //除数个数for(i = 0 ; i < num[N] ; i++){int div = divNum[N][i];      //除数/******核心计算部分********/int next = 2;<span style="white-space:pre">         </span>//初始化char num_10 = BigInt[0],num_1=BigInt[1];while(1){num_10 = (((num_10-48)*10+(num_1-48))%div)+'0';//计算余数作为下一个被除数的十位上的数字num_1 = BigInt[next];      //取个位数if(num_1=='\0')break;next++;}if(i==0){printf("(%c",num_10);}else if(i==num[N]-1){printf(",%c)\n",num_10);}else{printf(",%c",num_10);}/******核心计算部分********/}}return 0;
}

这段代码没有通过,是因为 Time Limit Exceeded,这跟很久没有写OJ代码有关系,包括局部变量重复浪费这些问题都没有考虑,于是认真分析了一遍还有哪些可以改进的:

1、输入部分没有可改进的

2、如果可用全部变量变量就不用局部变量

3、最后发现,时间耗费最大的内循环无法改变,只有外循环还有一次合并的机会,也就是说每次得到输入后立刻执行计算处理过程。

【代码实现-V2】(AC):

#include<stdio.h>
int main()
{int N,T;char BigInteger[50][1001];int num[50];int num_10,num_1,div,next,i,divNum[50][100];//使用全局变量scanf("%d",&T);for(N = 0 ; N < T ; N++){int i;scanf("%d",&num[N]);for(i = 0 ; i < num[N] ; i++){scanf("%d",&divNum[N][i]);}fflush(stdin);gets(BigInteger[N]);printf("(");for(i = 0 ; i < num[N] ; i++){div = divNum[N][i];//除数/******核心计算部分********/next = 2;num_10 = BigInteger[N][0];num_1=BigInteger[N][1];while(1){num_10 = (((num_10-48)*10+(num_1-48))%div)+'0';num_1 = BigInteger[N][next];if(num_1=='\0')break;next++;}if(i!=0){printf(",%c",num_10);   }else{printf("%c",num_10);}/******核心计算部分********/}printf(")\n");}return 0;
}

【收获】

1、重新熟悉了一下fflush(stdin)、gets函数

2、整型转字符型+'0',字符型转整型(数字类的根据ASCII码-48)

3、滥用局部变量不好习惯

SOJ-1020大数取模相关推荐

  1. POJ-2635 The Embarrassed Cryptographer 大数取模

    题意是给定一个大数,这个数是由两个素数相乘得到的,现在问你这个大数的分解是否存在一个素数小于给定的数.由于这个给定的数L小于10^6,所以我们就可以打表到10^6,最好打的大一点(比10^6大的最小的 ...

  2. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

  3. hdu1226超级密码【数字广搜+大数取模】

    第一眼看到这个题就想到了poj3126Prime Path (题解地址 果然还是自己做出来的题印象深) 但是很不幸的是 ,这个题一个大数取模就把我整蒙了orz 其他的真没啥区别,还多了一个第一位不能是 ...

  4. [2016湘潭邀请赛 A. 2016] 大数取模+循环节

    [2016湘潭邀请赛 A. 2016] 大数取模+循环节 1. 题目链接 XTU OnlineJudge : [2016湘潭邀请赛 A. 2016] 2. 题意描述 [图片看不清可以放大.] 给定一个 ...

  5. 【蓝桥杯】2017初赛 外星日历/大数取模

    题目描述 某星系深处发现了文明遗迹.他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的是,他们也使用了类似"星期"的概念,只不过他们的一个星期包 ...

  6. zcmu-1934(卡特兰数大数取模(逆元))

    1934: ly的二叉树 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 42  Solved: 9 [Submit][Status][Web Boar ...

  7. python快速幂算法解决大数取模

    1.前置性质 模运算的性质 [(a mod n)×(b mod n)] mod n = (a×b) mod n 指数可以拆分成二进制的形式,如9拆分成 1001 根据二进制的计算,1001 = ((1 ...

  8. 2018年东北农业大学春季校赛 K wyh的数列【数论/斐波那契数列大数取模/循环节】...

    链接:https://www.nowcoder.com/acm/contest/93/K 来源:牛客网 题目描述 wyh学长特别喜欢斐波那契数列,F(0)=0,F(1)=1,F(n)=F(n-1)+F ...

  9. hdu1212(大数取模)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 题意:给出两个数a, b,求a%b: 思路:(c+d)%e=c%e+d%e,(c*d)%e=(c ...

  10. HDU1212(大数取模-秦九昭算法)

    秦九昭算法: 把一个n次多项式f(x)=a[n]x^n+ a[n-1]x^(n-1)+-+a[1]x+a[0]改写成如下形式:f(x)=a[n] x^n + a[n-1]x^(n-1))+-+a[1] ...

最新文章

  1. AAAI 2020 | 华南理工:面向文本识别的去耦注意力网络
  2. AngularJs的UI组件ui-Bootstrap分享(六)——Tabs
  3. 动态绑定 dgvlist 列
  4. c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
  5. nginx 上传 文件超时设置_Ingressnginx自定义配置文件
  6. [转]OpenGL基础技术讲座--发展历史
  7. WebSocket跨域问题解决
  8. 利用GDI+ for.NET 给图片加水印标记
  9. iMazing备份的详细教程
  10. solr的两种启动方式
  11. python 使用 config 文件
  12. 思考Hadoop权威指南的一段话
  13. 如何把java源码打成jar_将java源码打成jar包
  14. 亮宁机器人套件_亮宁机器人可视化平台V2.2第3讲(图文)
  15. QQ消息自动发送器(自动发广告、聊天,支持群,支持最新的QQ2008II Beta1) C# 版...
  16. 信息系统开发方法以及其应用-系统分析师论文-2022年上半年必考知识点
  17. Oracle语句详解
  18. css创意立体字特性
  19. 在线excel、excel协同平台、网络excel类产品很多,为啥大公司却只选云表?
  20. uniapp 网易云音乐app项目总结

热门文章

  1. 腾讯云服务器快照是有什么用,腾讯云服务器快照有什么用?快照如何收费?
  2. 通过cookie技术实现记录用户的上一次访问时间并显示出来
  3. 90后还过五四吗?“过来人”送给青年10句忠告
  4. java游戏开发学习路线简记
  5. word目录问题——多级标题与页码中无制表符
  6. 自组网中继台_便携式中继台|背负式语音自组网基站
  7. 实现Freemarker生成word文档,内容可二次写入
  8. Matlab:实现环形板RCS(附完整源码)
  9. 集团动态 ||树莓集团第一次职工大会
  10. Windows10蓝屏的解决办法