[Vijos P2000]A x B Problem
题目大意:叫你求A × B。
解题思路:高精度。你可千万别小看这道题,这是2017年7月27日的信息。
不过也不要怕,根据twd2的题解里写的,用普通的高精度加上一些小小的修改是可以过的。
那么直接上代码吧。
C++ Code:
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
char s[5005];
long long num1[701],num2[701],num3[1700];
int main(){
int n;
scanf("%d",&n);
while(n--){
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
int len=0;
char c=getchar();
while(!isdigit(c))c=getchar();
while(isdigit(c)){
s[++len]=c;
c=getchar();
}
int w=1,l1=1,l2=1;
for(int i=len;i;i--){
if(w==100000000){
w=1;l1++;
}
num1[l1]+=w*(s[i]-'0');
w*=10;
}
len=0;
while(!isdigit(c))c=getchar();
while(isdigit(c)){
s[++len]=c;
c=getchar();
}
w=1;
for(int i=len;i;i--){
if(w==100000000){
w=1;l2++;
}
num2[l2]+=w*(s[i]-'0');
w*=10;
}
memset(num3,0,sizeof(num3));
int l3=l1+l2+4;
for(int i=1;i<=l1;i++)
for(int j=1;j<=l2;j++)num3[i+j-1]+=num1[i]*num2[j];
for(int i=1;i<=l1+l2+3;i++)
if(num3[i]>=100000000){
num3[i+1]+=num3[i]/100000000;
num3[i]%=100000000;
}
while(num3[l3]==0&&l3>1)l3--;
printf("%lld",num3[l3]);
for(int i=l3-1;i;i--)printf("%08lld",num3[i]);
puts("");
}
return 0;
}
这是时间使用情况:
我觉得时间用的并不是很多,就把乘法和除法、取模放在一块,结果居然被我卡过去了!!
C++ Code:
#include<cstdio>
#include<cstring>
#include<cctype>
using namespace std;
char s[5005];
long long num1[701],num2[701],num3[1700];
int main(){
int n;
scanf("%d",&n);
while(n--){
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
int len=0;
char c=getchar();
while(!isdigit(c))c=getchar();
while(isdigit(c)){
s[++len]=c;
c=getchar();
}
int w=1,l1=1,l2=1;
for(int i=len;i;i--){
if(w==100000000){
w=1;l1++;
}
num1[l1]+=w*(s[i]-'0');
w*=10;
}
len=0;
while(!isdigit(c))c=getchar();
while(isdigit(c)){
s[++len]=c;
c=getchar();
}
w=1;
for(int i=len;i;i--){
if(w==100000000){
w=1;l2++;
}
num2[l2]+=w*(s[i]-'0');
w*=10;
}
memset(num3,0,sizeof(num3));
int l3=l1+l2+4;
for(int i=1;i<=l1;i++)
for(int j=1;j<=l2;j++){
num3[i+j-1]+=num1[i]*num2[j];
num3[i+j]+=num3[i+j-1]/100000000;
num3[i+j-1]%=100000000;
}
while(num3[l3]==0&&l3>1)l3--;
printf("%lld",num3[l3]);
for(int i=l3-1;i;i--)printf("%08lld",num3[i]);
puts("");
}
return 0;
}
这是时间使用情况,可以发现,除了第一个点,其他都是900+ms的,有一个甚至达到了996ms!!这说明我RP好23333333。
[Vijos P2000]A x B Problem的更多相关文章
- 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...
- [题解]vijos & codevs 能量项链
a { text-decoration: none; font-family: "comic sans ms" } .math { color: gray; font-family ...
- BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 897 Solved: 394[Submit][Status ...
- vijos 1605 双栈排序 - 贪心 - 二分图
题目传送门 传送门I 传送门II 题目大意 双栈排序,问最小字典序操作序列. 不能发现两个数$a_{j}, a_{k}\ \ (j < k)$不能放在同一个栈的充分必要条件时存在一个$i$使得$ ...
- Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- NOIP 车站分级 (luogu 1983 & codevs 3294 & vijos 1851) - 拓扑排序 - bitset
描述 一条单向的铁路线上,依次有编号为 1, 2, ..., n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
- Vijos 1308 埃及分数 - 迭代加深
描述 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数.如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的.对于一个分数a/b,表示方法有很多种, ...
随机推荐
- 百度api使用说明
.初始化地图,并设置地图中心点 复制代码 https://www.cnblogs.com/zqzjs/p/5293698.html var map = new BMap.Map("allma ...
- data is not None
在读django的form源码: def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=Non ...
- MySQL Reading table information for completion of table and column names
打开数据库是发现提示: mysql> show databases; +--------------------+ | Database | +--------------------+ | b ...
- CF449D Jzzhu and Numbers (状压DP+容斥)
题目大意: 给出一个长度为n的序列,构造出一个序列使得它们的位与和为0,求方案数 也就是从序列里面选出一个非空子集使这些数按位与起来为0. 看了好久才明白题解在干嘛,我们先要表示出两两组合位与和为0的 ...
- 在centos里安装Nginx
(1)下载Nginx的RPM包 wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx ...
- Python学习笔记(4)列表
2019-02-26 列表(list):①创建方法:用‘[ ]’,将数据包括起来,数据之间用逗号隔开.②空列表:empty = []③增删改查: 1)增加: a.append()方法——将元素添加到列 ...
- 支持Openflow 1.3的wireshark插件安装教程
目前为止,我们使用openflow wiki里提供的minient镜像里集成的wireshark只支持openflow1.0,我们通过wireshark上 菜单 help-->about wir ...
- 常用js方法封装
常用js方法封装 var myJs = { /* * 格式化日期 * @param dt 日期对象 * @returns {string} 返回值是格式化的字符串日期 */ getDates: fun ...
- 2015 Multi-University Training Contest 8 hdu 5384 Danganronpa
Danganronpa Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- soapUI 5.1.2 下载以及破解
转:https://blog.csdn.net/weiqing723/article/details/78865734