c++ - SPOJ 上的快速乘法
问题描述
我正在解决SPOJ 上的FAST MULTIPLICATION。我的解决方案如下所示:
#include<bits/stdc++.h>
using namespace std;
int max(int a,int b)
{
if(a>b) return a;
return b;
}
long karatsuba_multiply(int x,int y)
{
if(x<10 or y<10) return x*y;
int n=max(to_string(x).length(),to_string(y).length());
int m=(int)ceil(n/2.0);
long p=(long)pow(10,m);
long a=(long)(floor(x/p));
long b=x%p;
long c=(long)(y/p);
long d=y%p;
long ac=karatsuba_multiply(a,c);
long bd=karatsuba_multiply(b,d);
long adbc=karatsuba_multiply(a+b,c+d)-ac-bd;
return (long)(pow(10*1,2*m)*ac+pow(10*1,m)*adbc+bd);
}
int main()
{
int a,b,t;
cin>>t;
while(t--)
{
cin>>a>>b;
cout<<karatsuba_multiply(a,b)<<endl;
}
return 0;
}
此代码在编码块 IDE 以及其他 IDE 上给出正确的输出。但是这个解决方案在 SPOJ 上被标记为错误的。谁能告诉我我做错了什么?
解决方案
推荐阅读
- c - 树莓派 pico pwm 行为怪异
- asp.net - 是否可以允许从多个域进行单点登录?企业与企业之间
- methods - Naive Bayes with triple class?
- awk - 带有正则表达式过滤器的 awk 输出似乎跳过了索引
- android - Android创建一个apk包
- linux - 在 Bash 脚本中自动输入键盘
- mysql - MYSQL order by - NULL 值影响我的结果
- javascript - 对于 JavaScript 中的增量函数,单击事件仅触发一次
- php - 如果未给出,则重定向到默认语言环境并加强路由
- python - Python从csv中的单元格中删除内容