洛谷 P2841 A*B Problem
https://www.luogu.org/problemnew/show/P2841
根本不会啊。。。
大概就是:如果两个数模a的结果相同,那么它们前面同时加上一个0或1后模a的结果仍然相同,因此可以先求a*b,按照模a的结果来划分状态,模a相同的只保留较小的,这样可以求出a*b,然后高精除得到b
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<map>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pi;
typedef pair<int,string> ps;
int n;
map<int,string> a1,a2;
ps ans;
int ax[];
int main()
{
int i,now;
bool fl=;
scanf("%d",&n);
if(n==)
{
puts("1 1");
return ;
}
a1[]="";a1[]="";now=;
while()
{
now=now*%n;
for(auto &x:a1)
{
if((x.fi+now)%n==)
{
ans=mp((x.fi+now)%n,""+x.se);
goto xxx;
}
//printf("%d %s\n",(x.fi+now)%n,("1"+x.se).c_str());
//printf("%d %s\n",x.fi,("0"+x.se).c_str());
if(!a2.count((x.fi+now)%n))
a2[(x.fi+now)%n]=""+x.se;
else
a2[(x.fi+now)%n]=min(""+x.se,a2[(x.fi+now)%n]);
if(!a2.count(x.fi))
a2[x.fi]=""+x.se;
else
a2[x.fi]=min(""+x.se,a2[x.fi]);
}
a1=a2;a2.clear();
//printf("%d\n",now);
}
xxx:;
now=;
for(i=;i<ans.se.length();i++)
{
now=now*+ans.se[i]-'';
ax[i]=now/n;now%=n;
}
for(i=;i<ans.se.length();i++)
{
if(ax[i]==&&!fl) continue;
fl=;printf("%d",ax[i]);
}
printf(" %s",ans.se.c_str());
return ;
}
洛谷 P2841 A*B Problem的更多相关文章
- 洛谷1001 A+B Problem
洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|< ...
- 洛谷1303 A*B Problem 解题报告
洛谷1303 A*B Problem 本题地址:http://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两个数 输出格式 ...
- 洛谷1601 A+B Problem(高精) 解题报告
洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...
- 洛谷P1865 A % B Problem
1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...
- 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]
题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...
- 洛谷 P1001 A+B Problem
题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9). 注意 1.pascal使用integer会爆掉哦! 2.有负数哦! 3.c/c++的main函数必须是int类型,而且 ...
- 【洛谷P1601 A+B Problem(高精)】
题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...
- 洛谷——P1480 A/B Problem
P1480 A/B Problem 题目描述 输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9) 输入输出格式 输入格式: 两行,第一行是被除数,第二行是除数. 输出 ...
- 洛谷P1480 A/B Problem(高精除高精)
P1480 A/B Problem 题目描述 输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9) 输入输出格式 输入格式: 两行,第一行是被除数,第二行是除数. 输出 ...
随机推荐
- 项目Beta冲刺(团队7/7)
项目Beta冲刺(团队7/7) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标: 完成项目Beta版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 陈宇 ...
- Marlin固件之—:基础入门与測试
一.Marlin的简介 Marlin固件是一个3D打印的开源固件,3D打印固件有很多,Marlin最为健全和强大,当然相对也会复杂一些.使用Gcode控制爱.Gcode是数控机床等工控控制使用范围较广 ...
- thinkphp Class 'PDO' not found 错误
thinkphp Class 'PDO' not found 错误,原因mysql5.7.26缺少pdo驱动,需要安装php的pdo和pdo_mysql扩展 本文以centOS为例 1.进入PHP源码 ...
- Drupal 7模板(主题钩子)的建议
这一块的内容很多其它的讲的是样例.所以这里请直接稳步官方站点查看吧.链接 https://drupal.org/node/1089656
- Phoenix(SQL On HBase)安装和使用报告
一.为什么使用Phoenix二.安装Phoenix2.1 兼容问题?2.2 编译CDH版本的Phoenix2.3 安装Phoenix到CDH环境中三.Phoenix的使用3.1 phoenix的4种调 ...
- 微信小程序 navigateTo 传对象参数
当微信小程序navigateTo传入参数是个object时,请使用JSON.strtingify将object转化为字符串,代码如下: wx.navigateTo({ url: '../sendChe ...
- Typescript 常见写法
一.Typescript 中数组 let list: number[] = [1, 2, 3]; let list: Array<number> = [1, 2, 3];
- [SoapUI] Learn materials
SoapUI Training : http://soapui-tutorial.com/index.php * Below are the details to access the onlin ...
- NFS (网络文件系统)
NFS (网络文件系统) https://www.cnblogs.com/wahaha02/p/9559345.html Linux网络文件系统的实现与调试 NFS协议 NFS (网络文件系统)不是传 ...
- BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP
BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP Description 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏. 初始时,一个有N(5 ...