ZJUTOJ 1217 大数乘法
来源:互联网 发布:公司网络管理通知 编辑:程序博客网 时间:2024/06/05 13:31
大数乘法和加法类似,不过算法更为奥妙,此题还要注意标志位的选择!
Description:
给定一些大数,请计算其积。Input:
输入数据中含有一些整数对(对数≤1000),若某对整数(整数位数≤200)的值为0 0,则表示输入结束。Output:
每对整数对应一个乘法计算结果,输出该结果,每个结果输出完后应回车。Sample Input:
2 312 340 0
Sample Output:
6408
#include<stdio.h>#include<string.h>#define max 200int main(){int i,j,len1,len2,flag1,flag2;int a1[max+20],a2[max+20],c[max*2+20];char str1[max+20],str2[max+20];while(scanf("%s%s",str1,str2) ) { if(strcmp(str1,"0")==0 && strcmp(str2,"0")==0 )//注意怎么判断结束 break; if(strcmp(str1,"0")==0 )//判断如果有等于零的情况怎么算 printf("0"); if(strcmp(str2,"0")==0 ) printf("0"); flag1=0; //标志位必须在这里定义,每次循环清零,到后边输出的时候判断是否有负号! flag2=0; if(str1[0]=='-') { flag1=1; str1[0]='0'; } if(str2[0]=='-') { flag2=1; str2[0]='0';} memset(a1,0,sizeof(a1));memset(a2,0,sizeof(a2));memset(c,0,sizeof(c));len1=strlen(str1);len2=strlen(str2);for(j=0,i=len1-1;i>=0;i--)a1[j++]=str1[i]-'0';for(j=0,i=len2-1;i>=0;i--)a2[j++]=str2[i]-'0';for(i=0;i<len2;i++)//注意谁乘谁 {for(j=0;j<len1;j++)c[j+i]+=a2[i]*a1[j];}for(i=0;i<max*2;i++){c[i+1]+=c[i]/10;//容易缺少累加符号 c[i]=c[i]%10;}for(i=max*2+19;(i>=0)&&(c[i]==0);i--);if((strcmp(str1,"0")!=0 )) { if(strcmp(str1,"0")==0 ) if((flag1&&!flag2)||(!flag1&&flag2)) printf("-"); for(;i>=0;i--) { printf("%d",c[i]); } }printf("\n"); } return 0;}
0 0
- ZJUTOJ 1217 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 第四篇:报错出现“Run-Time Check Failure #2-Stack around the variable 'p2240' was corrupted
- python抓价记(4)
- 【AekdyCoin】求小于等于N的与N互质的数的和
- android开发笔记之service(一)
- Secure CRT 自动连接中断解决办法
- ZJUTOJ 1217 大数乘法
- MySQL出现“错误1067:进程意外终止”
- 股票学习(技术指标)
- 判断回文数
- [LeetCode]Evaluate Reverse Polish Notation
- 随机收缩算法
- Leetcode 6 ZigZag Conversion
- Bootstrap全局CSS样式之栅格系统
- 数据库.创建表