1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include<math.h> char s1[1001],s2[1001]; int a[240],b[240],c[10001]; int main(){ scanf("%s %s",&s1,&s2); if(strcmp(s1,"0")==0 || strcmp(s2,"0")==0) { printf("%d",0); return 0; } int i,j; for(i = 0;i <strlen(s1);i++){ a[i] = s1[strlen(s1) - i - 1] - '0'; } for(i = 0;i < strlen(s2);i++){ b[i] = s2[strlen(s2) - i - 1] - '0'; } //循环a数组的每一位,用a[i]去乘以b数组的每一位b[j] //结果错位加到c数组的c[i+j]这一位上 for(i = 0;i < strlen(s1);i++){ for(j = 0;j < strlen(s2);j++){ c[i+j] = c[i+j] + a[i] * b[j]; c[i+j+1] = c[i+j+1] + c[i+j] / 10; c[i+j] = c[i+j] % 10; } } int p = 0; //逆序输出,逆序从第一个非0元素位置开始输出 for(i = strlen(s1) + strlen(s2) - 1;i >= 0;i--){ if(c[i] != 0){ p = i; break; } } for(i = p;i >= 0;i--){ printf("%d",c[i]); } return 0; }C++ :
#include <iostream> #include <cstring> using namespace std; void diaohuan(char s[],int a[]){ int i; for(i=0;s[i]!='\0';i++){ a[i]=s[strlen(s)-i-1]-48; } } int main(){ char a[250]; char b[250]; int m[250]={0}; int n[250]={0}; int c[500]={0}; gets(a); gets(b); int i,j; diaohuan(a,m); diaohuan(b,n); for(i=0;i<strlen(a);i++){ for(j=0;j<strlen(b);j++){ c[i+j]=c[i+j]+m[i]*n[j]; if(c[i+j]>=10){ c[i+j+1]=c[i+j+1]+c[i+j]/10; c[i+j]=c[i+j]%10; } } } int flag = 0;//表示c数组是否遇到第一个非0 for(i=strlen(a) + strlen(b);i>=0;i--){ if(c[i]!=0){ flag = 1; } if(flag == 1){ cout<<c[i]; } } if(flag == 0){ cout<<0; } }Java :
import java.util.Scanner; public class Main { static int a[] = new int[1001]; static int b[] = new int[1001]; static int c[] = new int[10000001]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String m,n; m = sc.next(); n = sc.next(); if(m.equals("0")||n.equals("0")) { System.out.println(0); return; } //分别将两个字符串对象放入整数数组 int k=0; for(int i=m.length()-1;i>=0;i--){ a[k++] = m.charAt(i)-'0'; } k = 0; for(int i=n.length()-1;i>=0;i--){ b[k++] = n.charAt(i)-'0'; } //遍历第一个数组 for(int i=0;i<m.length();i++){ //a[] for(int j=0;j<n.length();j++){ //b[]99 //上一轮的进位 累加 c[i+j] = c[i+j] + a[i] * b[j]; c[i+j+1] = c[i+j+1] + c[i+j]/10; c[i+j] = c[i+j]%10; } } int len = m.length()+n.length(); int p = len-1; for(int i=len-1;i>=0;i--){ if(c[i]!=0){ p = i; break; } } for(int i=p;i>=0;i--){ System.out.print(c[i]); } sc.close(); } }Python :
a,b=int(input()),int(input()) print(a*b)
- 1
信息
- ID
- 267
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者