/** 大数除法与求余 **/
//这个是uva上的一个题,本身写的那个比较繁琐,借鉴了一些其他人的方法 ...
/***
这个题大意为输入两个数和一个符号( '/' or ''% ),求除法或是求余(其中除数是n满足 0<n<231),例:
输入为:
110 / 100
99 % 10
输出为:
1
9
***/
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[1000],result[1000];
int main()
{
long long mod,divis;
int n,i,k,flag,len;
char c;
while(cin>>s>>c>>n) //输入被除数 s,符号 c ( '/' or ''% ),以及除数n
{
len=strlen(s);
if(c=='%')
{
mod=0;
for(i=0; i<len; i++)
{
mod=mod*10+s[i]-'0';
mod=mod%n; //利用除法性质,其实质是每次都是一个最多比n多一位的mod对n进行求余
}
cout<<mod<<endl;
}
else
{
divis=flag=0;
for(i=k=0; i<len; i++)
{
divis=divis*10+s[i]-'0';
if(divis>=n&&!flag) //利用除法性质,当divs大于除数n时,开始进行整除
{
result[k++]=divis/n+'0';
divis=divis%n; //除法性质,余数*10加下一位的数字便是新的被除数
flag=1;
}
else if(flag)
{
result[k++]=divis/n+'0';
divis=divis%n;
}
}
if(!k) result[k++]='0';
result[k]='\0';
cout<<result<<endl;
}
}
return 0;
}大数运算 (五)(正整型)—— 大数的除法与求余
最新推荐文章于 2025-04-19 23:09:12 发布
本文介绍了如何处理大数的除法和求余运算,以解决UVA上的一个问题。通过输入被除数、除数和运算符(除号或百分号),程序实现了大数的除法和求余计算。利用除法性质,优化了计算过程,确保了结果的正确性。
(正整型)—— 大数的除法与求余&spm=1001.2101.3001.5002&articleId=7802532&d=1&t=3&u=0d6ddd0e1f1243c58f6a10a218a2e50c)
1万+

被折叠的 条评论
为什么被折叠?



