UVa 10106 Product 【大数相乘】WA

虽然是错的代码,但是还是想贴出来,最开始WA发现是没有考虑到乘积为0的情况,后来把a*0,0*a,a*0---0(若干个0),0--0(若干个0)*a都考虑进去了;可是还是WA,实在不懂先留在这儿。

 Product 

The Problem

The problem is to multiply two integers X, Y. (0<=X,Y<10250)

The Input

The input will consist of a set of pairs of lines. Each line in pair contains one multiplyer.

The Output

For each input pair of lines the output line should consist one integer the product.

Sample Input

12
12
2
222222222222222222222222

Sample Output

144
444444444444444444444444
#include<stdio.h>
#include<string.h>
#define max 500
int panduan(char a[])
{
  int tag,flag=1;
  int i;
  for(i=0;a[i]!=‘\0‘&&flag;i++)
  {
  	if(a[i]!=‘0‘)
  	{
  		flag=0;
  	}
  }
  if(flag)
  {
      if(i==1)
      return 1;
      else
      return 2;
  }
  else
  return 0;
}
int main()
{
    int i,j;
    int len1,len2,len;
    int a[max],b[max],c[max];
    char str1[max],str2[max];
    while(~scanf("%s %s",&str1,&str2))
    {
        if(panduan(str1)==1||panduan(str2)==1)//判断两个相乘的数里面有没有‘0‘
        {
            printf("0\n");
        }
        else if(panduan(str1)==2||panduan(str2)==2)//判断两个相乘的数里面如果出现0---0(若干个),则不处理这组数据
        {
            printf("\n");
           continue;
        }
        else
        {

            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            memset(c,0,sizeof(c));
            len1=strlen(str1);
            len2=strlen(str2);
            for(i=0;i<len1;i++)
             {
            a[i]=str1[len1-i-1]-‘0‘;
             }
            for(i=0;i<len2;i++)
              {
            b[i]=str2[len2-i-1]-‘0‘;
              }
            for(i=0;i<len2;i++)
              {
            for(j=0;j<len1;j++)
            c[i+j]+=b[i]*a[j];
               }
        len=i+j;
        for(i=0;i<len;i++)
        {
            if(c[i]>=10)
            {
            c[i+1]+=c[i]/10;
            c[i]=c[i]%10;
            }
        }
        for(i=len;(c[i]==0)&&(i>=0);i--);
        for(j=i;j>=0;j--)
           printf("%d",c[j]);
           printf("\n");

        }
    }
}

  

时间: 2024-10-13 12:42:53

UVa 10106 Product 【大数相乘】WA的相关文章

UVA 10106 Product (大数相乘)

Product The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input The input will consist of a set of pairs of lines. Each line in pair contains one multiplyer. The Output For each input pair of lines the output line should c

uva 10106 Product

//简单大数相乘,用java很简单 import java.util.Scanner; import java.math.BigInteger; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); BigInteger a,b; while(in.hasNext()){ a = in.nextBigInteger(); b = in.nextBigInteg

uva 10106 Product(高精度大数乘法)

昨天刚写了个大数加法,今天又来了个大数乘法,其实解法差不多,只不过换成了好多个大数的相加而 已,看别人的算法其实跟我的也差不多,都是这个姿势.wa了一次,竟然忘了考虑0的情况,以后交题之前,都要判 断一下边缘数据,大数据和小数据,要不就是白白被扣时间啊 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; char a[

UVA 10106 Product 高精度运算

J - Product Crawling in process... Crawling failed Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description  Product  The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input The

Product UVA 10106

题目: Product The Problem The problem is to multiply two integers X, Y. (0<=X,Y<10250) The Input The input will consist of a set of pairs of lines. Each line in pair contains one multiplyer. The Output For each input pair of lines the output line shou

大数相乘&mdash;&mdash;模拟乘法的运算规则

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> int main() { void add(int a[], int length1, int b[], int length2); char str1[255], str2[255]; int num1[255] = { 0 }, num2[255] = { 0 }; int product[255] = { 0 }, temp[255] =

uva 993 Product of digits (分解因子)

uva 993 Product of digits 题目大意:给定一个数N,要求出一个数,使得这个数的每一位相乘会等于N,且这个数的值最小. 解题思路:简单的分解因子.要注意的地方有两点:1) 因子从9开始向2遍历,可以保证位数最小: 2)当N等于1是最好特殊处理. #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std;

Stanford Algorithms(一): 大数相乘(c++版)

Stanford Algorithms(一): 大数相乘(c++版) 刚不就在中国大学Mooc上参加了陈越老师的数据结构的课程,收获很大.觉得趁热打铁,也把算法的部分也给一块学了吧,就在Coursera上注册了一个斯坦福大学的算法课,课程的量很重,估计要学一个学期吧,慢慢的学,稳扎稳打. 课程里推荐了很多书,我找了一本, 书名就叫Algorithms,作者是S.Dasgupta教授,简单翻看了一下,觉得写的挺不错,就姑且把这本书当做教材了. 还是那句话,贵精不贵多,一门学深入了,收获就会很大,总

1051:A &#215; B problem 大数相乘

给你两个整数,请你计算A × B. 输入 数据的第一行是整数T(1 ≤ T ≤ 20),代表测试数据的组数.接着有T组数据,每组数据只有一行,包括两个非负整数A和B.但A和B非常大,Redraiment能保证这些数用long来保存一定会溢出.但A和B的位数最大不会超过100位. 输出 对应每组测试数据,你都要输出两行:第一行为:"Case #:", # 代表这是第几组测试数据.第二行是一个等式:"A * B = Sum", Sum 代表 A × B 的结果.你要注意