Eternally__ @ 2023-07-23 09:06:44
# include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b;
if(a<=10^2020){
if(b<=10^2020){
if(a>=0){
if(b>=0){
cout<<a*b;
}
}
else
{
cout<<"请输入非负整数";
}
}
}
else{
cout<<"请输入非负整数";
}
return 0;
}
by timmark @ 2023-07-23 10:08:04
那啥,10^2020
是异或的意思,异或是一种位运算。C++ 默认是没有幂运算的。
建议学一下高精。
by timmark @ 2023-07-23 10:09:50
另外,落谷的数据一般都是符合数据访问的,不会出现有问题的情况,不要输出这种提示信息,会被评测姬判为 Wrong Answer。
by He_JJ @ 2023-08-04 15:50:22
你得用高精度就是用程序来做列乘法竖式 我一会给你个高精度乘模版
by jxqWa @ 2023-08-11 09:55:28
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
char a1[10001],b1[10001];
int a[10001],b[10001],i,x,len,j,c[10001];
int main(){
scanf("%s %s",a1,b1);//输入字符串
int len1=strlen(a1);
int len2=strlen(b1);
for(i=1;i<=len1;i++){
a[i]=a1[len1-i]-'0';//将字符串录入数组
}
for(i=1;i<=len2;i++){
b[i]=b1[len2-i]-'0';
}
for(i=1;i<=len2;i++){
for(j=1;j<=len1;j++){
c[i+j-1]+=a[j]*b[i];//乘法竖式操作
}
}
for(i=1;i<len1+len2;i++){//进位处理
if(c[i]>9){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
len=len1+len2;
while(c[len]==0&&len>1){//判断首位是否为0,为0则删除一位
len--;
}
for(i=len;i>=1;i--){//输出结果
printf("%d",c[i]);
}
return 0;
}
by biangbiangli @ 2023-08-21 11:49:05
10^2000在C++里面是10异或2000,不是10的2000次方!
(其实用Python 3可以一行水过的)
by biangbiangli @ 2023-08-21 11:55:15
print( int (input) * int (input) )
by pengrongxuan @ 2023-08-28 07:31:32
@timmark 意思是10 xor 2020 可以上网搜
by pengrongxuan @ 2023-08-28 07:32:50
@timmark pow好像可以