前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言:大数取余_c语言15和50取余等于多少

C语言:大数取余_c语言15和50取余等于多少

作者头像
全栈程序员站长
发布2022-09-20 10:41:24
1.5K0
发布2022-09-20 10:41:24
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

大数取余数(数组)

今天做学校的oj时遇到一题,问题可见一下截图:

查遍各大论坛,都没有遇到合适的方法,普通方法不可用,要采用数组的形式。

C语言:大数取余_c语言15和50取余等于多少
C语言:大数取余_c语言15和50取余等于多少

被除数超过long long类型,不能采用常规思路,否则会出现wrong answer。值得注意的一点,是不能用double等实数类型,只有整数类型的才可以求余数;

因此可以考虑利用数组运算,可以先定义字符串数组char a[5000],下标多打一些没有关系,以防万一,到时候可以用scanf(“%s”,a)解决。

个人的思路是再定义一个整数数组int b[5000],先把a数组中的每个字符数字转换成数字。接下去就是小学生做题目了:

前一个数字先乘以10然后再加上后一个数,进行取余数,余数再乘以10加上后一个数,以此往复即可。

C语言:大数取余_c语言15和50取余等于多少
C语言:大数取余_c语言15和50取余等于多少

完整代码如下:

代码语言:javascript
复制
 1 #include <stdio.h>  2 #include <string.h>  3 int main()  4 {  5 char a[3000];  6 int k,b[3000];  7 while(scanf("%s%d",a,&k)!=EOF)  8  {  9 int l; 10 l=strlen(a); 11 int i; 12 for(i=0;i<l;i++) 13  { 14 b[i]=a[i]-'0'; 15  } 16 for(i=0;i<l;i++) 17  { 18 b[i+1]=(b[i]*10+b[i+1])%k; 19  } 20 printf("%d\n",b[l-1]); 21  } 22 return 0; 23 }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167467.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档