zoukankan      html  css  js  c++  java
  • (TOJ1051)A × B problem

    描述

    Redraiment碰到了一个难题,需要请你来帮忙:给你两个整数,请你计算A × B。

    输入

    数据的第一行是整数T(1 ≤ T ≤ 20),代表测试数据的组数。 接着有T组数据,每组数据只有一行,包括两个非负整数A和B。
    但A和B非常大,Redraiment能保证这些数用long来保存一定会溢出。
    但A和B的位数最大不会超过100位。

    输出

    对应每组测试数据,你都要输出两行:
    第一行为:"Case #:", # 代表这是第几组测试数据。 第二行是一个等式:"A * B = Sum", Sum 代表 A × B 的结果。
    你要注意这个等式里包含了几个空格。 要求每组数据之间都需要保留一个空行。

    样例输入

    2
    1 2
    123456789 987654321

    样例输出

    Case 1:
    1 * 2 = 2
    
    Case 2:
    123456789 * 987654321 = 121932631112635269
     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 int main()
     5 {
     6   char a[101],b[101];
     7   int i,j,k,n,count=1,num2,num3;
     8   scanf("%d",&n);
     9   getchar();
    10   while (n--)
    11   {
    12      int c[100000]={0};
    13      scanf("%s %s",a,b);
    14      num2=strlen(a);
    15      num3=strlen(b);
    16      getchar();
    17      if (strcmp(a,"0")==0||strcmp(b,"0")==0)  //如果a或b为0,则结果为0 
    18      {
    19        printf("Case %d:\n",count);
    20        printf("%s * %s = 0\n",a,b);
    21        count++;
    22      }
    23      else
    24      {
    25        for (i = 0; i < num2; i++)
    26        {
    27           for (j = 0; j < num3; j++)
    28           {
    29              c[i+j]+=(a[num2-i-1]-'0')*(b[num3-j-1]-'0');
    30              k=i+j;
    31              while (c[k]>=10)
    32              {
    33                c[k+1]+=c[k]/10;
    34                c[k]%=10;
    35                k++;
    36              }
    37           }
    38        }
    39       i=9999;
    40       num2=i;
    41       while (c[i]==0)
    42       {
    43          i--;
    44          num2 = i;
    45       }
    46       printf("Case %d:\n",count);
    47       count++;
    48       printf("%s * %s = ",a,b);
    49       for (i = num2; i >= 0;i--)
    50       {
    51          printf("%d",c[i]);
    52       }
    53       printf("\n");
    54    }
    55    if (n>=1)
    56    { 
    57      printf("\n");
    58    }
    59   }
    60   return 0;
    61 }
     
    作者:xueda120
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    联网获取图片, 保存用户的图像 bitmap
    使用 线程池,控制线程 , 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待:
    ImageView属性 android:scaleType="fitXY" ,拉伸图片非常好用
    Activity之间传值,Intent
    退出应用程序 按两次退出键
    修炼-------------Android TabHost,TabWidget选项卡总结
    对TabHost、TabWidget的理解分析
    poj 1847 Tram
    hdu 1874 畅通工程续
    hdu 2544 最短路
  • 原文地址:https://www.cnblogs.com/xueda120/p/3092862.html
Copyright © 2011-2022 走看看