A + B Problem II(高精度加法)
来源:互联网 发布:五行量化指标源码 编辑:程序博客网 时间:2024/05/20 09:21
#include <stdio.h>#include <string.h>int main(){ int lenmax,la,lb,k,i,n,len,lenmin,l=1; char a[1000]; char b[1000]; char sum[1000]; char ch; scanf("%d",&n); getchar(); while(n--) { scanf("%s",&a); scanf("%s",&b);//输入a和b//奥注意输入时y la=strlen(a)-1; lb=strlen(b)-1; lenmax=(la>lb?la:lb); lenmin=(la<lb)?la:lb; for(i=0;i<=lenmax+1;i++)//将0位置留出来,防止越位,一共len+1位 sum[i]='0'; //开始计算 //计算分2类,一类la==lb,二类la>lb或la<lb for(i=lenmax+1;lenmin!=-1;i--)//写相同的部分,从后往前,要防止进位 { if(sum[i]+a[la]+b[lb]>=154)//154是三个数加起来等于10时的ascll的和,如1+4+5=49+52+53=154 { sum[i]=sum[i]+a[la--]+b[lb--]-106;//106是通过1+9+1-10=1=49=(49+57+49)-106 sum[i-1]='1'; } else { sum[i]=a[la--]+b[lb--]+sum[i]-96; } lenmin--; } /*以上为两个数字相同的末位,下面开始讨论如果有剩余*/ if(la<0) { for(k=i;k>=1;k--) { if(sum[k]+b[lb]>=106) { sum[k]=sum[k]+b[lb--]-58;//1+9=10=49+57-58=48 sum[k-1]='1'; } else { sum[k]=b[lb--]+sum[k]-48;//1+0-x=1=49+48-48=49 } } } else { for(k=i;k>=1;k--) { if(sum[k]+a[la]>=106) { sum[k]=sum[k]+a[la--]-58;//1+9=10=49+57-58=48 sum[k-1]='1'; } else { sum[k]=a[la--]+sum[k]-48; } } } //打印sum数组 printf("Case %d:\n%s + %s = ",l,a,b); if(sum[0]>'0'&&sum[0]<='9') { printf("%c",sum[0]); } for(k=1;k<=lenmax+1;k++) printf("%c",sum[k]); printf("\n"); l++; if(n)printf("\n"); } return 0; }
做了,好久,昨天晚上8.00钟写,写到9.30,刮大风,下雨了,我打着雨伞,走在雨中。我们这边,旁边的城市,刮起了龙卷风,还下了冰雹,死了98人,伤是500多人,厄尔尼诺现象,室友说这和七月下雪,是一样的;
然后,今天从上午,10.00左右,写,写了一遍,然后出错,调了好久,一直是错,干脆,就睡了一觉,重新写了一遍,吃饭去
java
import java.util.Scanner;import java.math.BigInteger;public class Main { public static void main(String []args){ BigInteger a,b; int T; Scanner input=new Scanner(System.in); T=input.nextInt(); for(int i=1;i<=T;i++){ a=input.nextBigInteger(); b=input.nextBigInteger(); System.out.println("Case"+" "+i+":"); System.out.println(a+" + "+b+" = "+a.add(b)); } }}
0 0
- A + B Problem II(高精度加法)
- hdu1002 A + B Problem II(高精度加法)
- hdu 1002 A + B Problem II(高精度加法)
- HDU 1002 A + B Problem II (高精度加法)
- HDOJ 1002 A + B Problem II(高精度加法)
- HDOJ1002 A+B Problem II(高精度/大整数加法)
- HDOJ 1002 A + B Problem II //高精度加法
- A + B Problem II(大数加法)
- A + B Problem II (大数加法)
- 高精度加法 洛谷 P1601 A+B Problem(高精)
- HDU 1002 A+B Problem 高精度加法
- HDU 1002 A + B Problem II 高精度加法程序 覆盖大量字符串处理基础 详细注释
- 【hdoj1002】 A + B Problem II(模拟加法)
- nyoj103 A+B Problem II (大数加法)
- A + B Problem II(hdu1002,大数加法)
- hdu 1002 A + B Problem II(大数模拟加法)
- HD1002 A + B Problem II(大数简单的加法)
- hduoj 1002 A + B Problem II(大数加法)
- 地图与定位(七)高德定位服务
- 移动端web页面知识小结之meta部分
- ajaxFileUpload+SpringMVC框架+maven 实现文件上传
- jsp及servlet分别实现简单的计算器
- Format —— Java & Android
- A + B Problem II(高精度加法)
- elasticsearch 修改mapping
- Win7下使用U盘安装Ubuntu16.04双系统
- Hibernate缓存
- /**获取字符串所占大小*/
- 通过ADB命令删除本地文件后,Andorid系统图库不更新的问题
- Java 中 HashMap 初始化时赋值
- Spring面向切面编程的三种方式以及常用相关案例总结
- 再谈谈继承