输入两大整数(都是200位内 非负 没前导零) 求其相乘
没看出什么问题 提交网站却显示WA 求点拨
1条回答 默认 最新
- ilbn20 2015-09-29 08:20关注
#include
#include
using namespace std;
int main(){
int cc=0;
char str[201],ptr[201];
int st[201]={0};
int pt[201]={0};
int a[410]={0};
cin>>str;
cin>>ptr;
int ls=strlen(str);
int lp=strlen(ptr);for(int i=0;i<200;i++){ //将字符串以逆向数组形式存起来 if(i<ls) st[i]=str[ls-i-1]-'0'; } for(int ii=0;ii<200;ii++){ //同上 if(ii<lp) pt[ii]=ptr[lp-ii-1]-'0'; } for(int j=0;j<lp;j++){ //将第一个大整数与第二个按位相乘 int b[410]={0}; for(int t=0;t<lp+ls+2;t++){ //求出第一整数和另一其中一位的结果 b[t+j+1]+=(st[t]*pt[j]+b[t+j])/10; b[t+j]=(st[t]*pt[j]+b[t+j])%10; } for(int k=0;k<lp+ls+2;k++){ if(a[k]+b[k]>9) a[k]=a[k]+b[k]-10,a[k+1]++; else a[k]=a[k]+b[k]; } } for(int i=409;i>=0;i--){ if(a[i]) cc=1; if(cc) cout<<a[i]; } if((ls==1&&st[0]==0)||(lp==1&&pt[0]==0)) cout<<"0"; cout<<endl; return 0;
}
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Qt下使用tcp获取数据的详细操作
- ¥15 idea右下角设置编码是灰色的
- ¥15 全志H618ROM新增分区
- ¥20 jupyter保存图像功能的实现
- ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
- ¥15 NAO机器人的录音程序保存问题
- ¥15 C#读写EXCEL文件,不同编译
- ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
- ¥15 扩散模型sd.webui使用时报错“Nonetype”
- ¥15 stm32流水灯+呼吸灯+外部中断按键