#include<bits/stdc++.h> using namespace std; string s1; int a[250],b,p;//p表示找到的第一个非0元素的下标 int main(){ /*1286解题思路 1.将高精度整数s1逆序存入数组a 2.将数组a中的每一位和整数b相乘,结果存入a数组 3. 逐位进位 4.逆序输出 考虑两个数相乘,乘完后的结果是几位数 最少是一位,当整数b位0,结果是一位,要考虑到特殊情况 最多,多出4位 */ cin>>s1; cin>>b; //将s1逆序存入数组a for(int i=0;i<s1.size();i++){ a[i]=s1[s1.size()-1-i]-'0'; } //逐位相乘 for(int i=0;i<s1.size();i++){ a[i]=a[i]*b; } //逐位进位,s1*b最多多出4位 for(int i=0;i<s1.size()+4;i++){ if(a[i]>=10){ a[i+1]=a[i+1]+a[i]/10; a[i]=a[i]%10; } } return 0; } /************************************************************** Problem: 1286 User: hulaoshi Language: C++ Result: Wrong Answer ****************************************************************/