zoukankan      html  css  js  c++  java
  • joj 1189

     大数,题目有点误解人。。。明明说VeryLongInteger但运算的却不是数字而是文本行

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    char str1[1000005],str2[105];
    int main()
    {
        scanf("%s",str1);
        while(scanf("%s",str2),strcmp(str2,"0")!=0)
        {
             int len1,len2,i=0;
             while(str1[i]!='\0')
                 i++;
             len1=i;
             i=0;
             while(str2[i]!='\0')
                 i++;
             len2=i;
             if(len1==len2)
             {
                 int i=len1-1;
                 int c=0;
                 while(i>=0)
                 {
                    
                     int m=c+str2[i]-'0'+str1[i]-'0';
                     str2[i]=m%10+'0';
                     c=m/10;
                     i--;
                 }
                 if(c>0)
                 {
                    str1[0]=c+'0';
                    strcpy(str1+1,str2);
                 }
                 else
                    strcpy(str1,str2);
             }
             else if(len1<len2)
             {
                 int i=len1-1;
                 int c=0;
                 int q=len2-len1;
                 while(i>=0)
                 {
                    
                     int m=c+str2[i+q]-'0'+str1[i]-'0';
                     str2[i+q]=m%10+'0';
                     c=m/10;
                     i--;
                 }
                 q--;
                 while(c&&q>=0)
                 {
                     int m=c+str2[q]-'0';
                     str2[q]=m%10+'0';
                     c=m/10;
                     q--;
                 }
                 if(c>0)
                 {
                    str1[0]=c+'0';
                    strcpy(str1+1,str2);
                 }
                 else
                    strcpy(str1,str2);
             }
             else if(len1>len2)
             {
                 int i=len2-1;
                 int c=0;
                 int q=len1-len2;
                 while(i>=0)
                 {
                    
                     int m=c+str1[i+q]-'0'+str2[i]-'0';
                     str1[i+q]=m%10+'0';
                     c=m/10;
                     i--;
                 }
                 q--;
                 while(c&&q>=0)
                 {
                     int m=c+str1[q]-'0';
                     str1[q]=m%10+'0';
                     c=m/10;
                     q--;
                 }
                 if(c>0)
                 {
                    strcpy(str2,str1);
                    str1[0]=c+'0';
                    strcpy(str1+1,str2);
                 }
             }
        }
        printf("%s\n",str1);
       
    }


     

  • 相关阅读:
    0302思考并回答一些问题
    1231 实验四 递归下降语法分析程序设计
    1118 实验三 有限自动机的构造与识别
    1112对他人的博客评论及建议
    1029c语言文法
    1022词法分析实验总结
    词法分析
    0330 复利计算——单元测试
    0321 读《构建之法》第一,二,三章有感
    0316 复利计算总结(0330 更新)
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985937.html
Copyright © 2011-2022 走看看