题目大意:叫你求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的更多相关文章

  1. 【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募

    http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include< ...

  2. 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险

    http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...

  3. 【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流

    http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ ...

  4. [题解]vijos & codevs 能量项链

    a { text-decoration: none; font-family: "comic sans ms" } .math { color: gray; font-family ...

  5. BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】

    1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 897  Solved: 394[Submit][Status ...

  6. vijos 1605 双栈排序 - 贪心 - 二分图

    题目传送门 传送门I 传送门II 题目大意 双栈排序,问最小字典序操作序列. 不能发现两个数$a_{j}, a_{k}\ \ (j < k)$不能放在同一个栈的充分必要条件时存在一个$i$使得$ ...

  7. Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  8. NOIP 车站分级 (luogu 1983 & codevs 3294 & vijos 1851) - 拓扑排序 - bitset

    描述 一条单向的铁路线上,依次有编号为 1, 2, ..., n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...

  9. Vijos 1308 埃及分数 - 迭代加深

    描述 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数.如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的.对于一个分数a/b,表示方法有很多种, ...

随机推荐

  1. 苹果操作系统名称演变史 新名称macOS

    历史回顾 发布年代 名称 序号 1994-1999 Classic Mac OS 1-9 2001-2011 Mac OS X 10.0-Lion 2012-2015 OS X Mountain Li ...

  2. JS中let和var的区别

    js中let和var定义变量的区别   let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781 ...

  3. to_string函数(将数字转换成字符串)

    一般常用的转换字符串的方法std::stringstream,但是效率较低;目前C ++11提供了std::to_string 效率方面:C风格的sprintf()没有动态分配内存效率最高;std:: ...

  4. HDU 5762 Teacher Bo ( 暴力 )

    链接:传送门 题意:给出N个点( Xi , Yi ),和点的最远位置M,询问是否有这样的四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D) ,AB的曼哈顿路径长度等于CD的曼哈 ...

  5. vue通过路由实现页面刷新

    vue 开发微信商城项目,需求如下: 购物车页面跳转到详情页,购物车页面包含了多个组件,点击结算跳转到订单页面,从订单返回时,购物车页面没有刷新,由于购物车组件之间通过bus实现事件传递,页面跳转(非 ...

  6. 2019-03-18 使用Request POST获取CNABS网站上JSON格式的表格数据,并解析出来用pymssql写到SQL Server中

    import requests import pymssql url = 'https://v1.cn-abs.com/ajax/ChartMarketHandler.ashx' headers = ...

  7. 单元测试Struts2的Action(包含源码)

    很久没有从头搭建Struts2的环境了.最近,认真实践了单元测试Struts2.Spring等Java项目. 今天特意写的是单元测试Struts2的Action,遇到了不少问题,果然是实践出真知啊. ...

  8. BTrace介绍和生产环境样例

    BTrace latest realese: release-1.2.5.1 BTrace guide(1.2-20101020): http://kenai.com/projects/btrace/ ...

  9. Android Touch事件传递机制全面解析(从WMS到View树)

    转眼间近一年没更新博客了,工作一忙起来.非常难有时间来写博客了,因为如今也在从事Android开发相关的工作,因此以后的博文也会很多其它地专注于这一块. 这篇文章准备从源代码层面为大家带来Touch事 ...

  10. 推断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

    第一个版本号: //return true in big-endian machines bool check_big_endian1() { int a = 0; int *p = &a; ...