POJ 1117 Pairs of Integers
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 4133 | Accepted: 1062 |
Description
Input
Output
X + Y = N
Here X, Y, and N, must be replaced with the corresponding integer numbers.
There should be exactly one space on both sides of '+' and '=' characters.
Sample Input
302
Sample Output
5
251 + 51 = 302
275 + 27 = 302
276 + 26 = 302
281 + 21 = 302
301 + 01 = 302
Source
【题意】
给出一个数N,求X+Y = N的所有数对(X,Y),X,Y有如下要求,Y是X这个数删除一位所得到的数,X不能含有前导0,但是Y可以含有前导0.
【分析】
将数分三段,可以把X看成三部分:HSL,高位H,低位L,中间被strike掉的位S
所以Y 就是HL
X = (H*10 + S)*10^i + L, (i = 0, 1, 2 ... 最多log10(N),i代表L是几位数)
Y = H*10^i + L
X + Y = (H*11 + S) * 10^i + 2*L = N
N/(10^i) = (11H+S) + 2L/(10^i),其中2L/(10^i)只可能为0和1,再加上i的不到10种取值,共20种不到的组合
所以我们通过枚举L的值,来推导出H和S。
当N是奇数的时候,只可能是删除X的最后一位得到,(原因是如果L存在,则2*L%(10^i)取余
是N的后i位,因为2*L是偶数,所以N必然四偶数)。此时变成H*11 + S = N
由于S是一个数字,其值只能是0~9,故当N%11 != 10的时候是有解的。
1.N是奇数,N%11 != 10,有一个解。
2.N是偶数,还是需要考虑删除的是最后一位的情况,该情形和奇数的是一样的。
3.当枚举L的时候,又分为两种情况,2*L有进位,和2*L无进位,
即(2*L)%(10^i) = N%(10^i)
举个例子吧:
假设L是一位数,发现N的末尾是2,
则我们可以猜测的是,L = 1, 2*L = 2, 2*L无进位
然而L = 6,也是满足条件的,2*L = 12, 2*L%(10^i) = 2,即2*L向前进了1,其余数为2.
最后这样求解还可能存在重复的结果,所以我们map去一下重
【代码】
#include<map>
#include<cstdio>
#include<iomanip>
#include<iostream>
using namespace std;
int n,H,S,L,X;map<int,int>res,ri;
int main(){
cin>>n;
for(int i=0,I=1;I<=n;i++,I*=10){
if(n%I%2) continue;
H=n/I/11;
S=n/I%11;
L=n%I/2;
if(S<=9){
X=(H*10+S)*I+L;
if(H+S) res[X]=H*I+L;
ri[X]=i;
}
L=(n%I+I)/2;
S=n/I%11-1;
if(S>=0&&L){
X=(H*10+S)*I+L;
if(H+S) res[X]=H*I+L;
ri[X]=i;
}
}
cout<<res.size()<<endl;
for(map<int,int>::iterator it=res.begin();it!=res.end();it++)
cout<<it->first<<" + "<<setw(ri[it->first])<<setfill('0')<<it->second<<" = "<<n<<endl;
return 0;
}
POJ 1117 Pairs of Integers的更多相关文章
- Pairs of Integers
Pairs of Integers You are to find all pairs of integers such that their sum is equal to the given in ...
- poj 2239 Selecting Courses (二分匹配)
Selecting Courses Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8316 Accepted: 3687 ...
- OpenJudge/Poj 1207 The 3n + 1 problem
1.链接地址: http://bailian.openjudge.cn/practice/1207/ http://poj.org/problem?id=1207 2.题目: 总时间限制: 1000m ...
- OpenJudge/Poj 1125 Stockbroker Grapevine
1.链接地址: http://poj.org/problem?id=1125 http://bailian.openjudge.cn/practice/1125 2.题目: Stockbroker G ...
- POJ 2718 Smallest Difference(最小差)
Smallest Difference(最小差) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 Given a numb ...
- poj 2284 That Nice Euler Circuit 解题报告
That Nice Euler Circuit Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 1975 Accepted ...
- 【POJ】1523 SPF(割点)
http://poj.org/problem?id=1523 太弱... too weak.. 割点我都还要看书和看题解来写..果然是写不出么.. 割点就那样求,然后分量直接这个节点有多少子树就有子树 ...
- POJ 1125 Stockbroker Grapevine【floyd简单应用】
链接: http://poj.org/problem?id=1125 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- Poj 1125 Stockbroker Grapevine(Floyd算法求结点对的最短路径问题)
一.Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a ...
随机推荐
- 安装PHP5 PHP7
安装 PHP5 PHP官网www.php.net • 当前主流版本为5./7.1 • cd /usr/local/src/ • wget http://cn2.php.net/distribution ...
- /文件和目录权限chmod /更改所有者和所属组chown/umask/隐藏权限lsattr/chattr
2.14 文件和目录权限chmod 2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr 文件和目录权限chmod 文件权限: r 4 ...
- ASP利用xhEditor编辑器实现图片上传的功能。
本人这几天在做一个软件,无意中用到xhEditor在线编辑器,这个编辑器虽然看着比较简单,但功能非常强大,大家可以去官网上查看,废话不说了. 这篇文件主要是实现在ASP环境中利用xhEditor编辑器 ...
- BareTail大文件日志实时查看工具
BareTail 动态的查看日志文件,就像Linux上的tail tail -f nohup.out 功能: 实时文件查看 tail命令模式,自动滚动 支持2g以上大文件 自动滚动 彩色监控 多文件监 ...
- web.py开发
web.py需要使用python2.X,所以安装python版本2.7.9 web.py 是一个轻量级Python web框架,它简单而且功能强大 web.py安装 安装python (1)使用pip ...
- 微信支付id出现的重复支付解决方法和app应用中多种支付方式之间的对比
1.微信支付的transId发起支付请求,未登录微信,先帐号登陆,否则直接去支付.这样的话,该transId跟该帐号绑定起来了, 如果下一次再重新使用该transId来支付请求,但是想切换其他的微信帐 ...
- mysql5.7系列修改root默认密码
操作系统为centos7 64 1.修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2. ...
- [Module] 06 - DataBinding and MVVM
下一步学习列表: Android DataBinding使用总结(一) *** Android DataBinding使用总结(二) Android DataBinding使用总结(三)列表展示 An ...
- JAVA内存泄露分析及解决
一,问题产生 项目采用Tomcat6.0为服务器,数据库为mysql5.1,数据库持久层为hibernate3.0,以springMVC3.0为框架,项目开发完成后,上线前夕进行稳定性拷机,测 ...
- Apache性能优化总结
1.介绍 首先要了解Apache采用的MPM(Multi -Processing Modules,多道处理模块),MPM是Apache的核心,它的作用是管理网络连接.调度请求.Apache2.0中MP ...