HDU 1271 整数对(思路题)
假设删除第k位,把整数A表示成如下形式:
A = a * 10^(k+1) + b * 10 ^k + c;
则: B = a * 10^k + c;
N = A + B = (11*a+b)*10^k + 2*c;
显然:
11*a+b = N / (10^k)
2*c = N % (10^k)
但是c有可能产生进位,产生的影响为:
11*a+b+1 = N/(10^k)【b+1最多为10,不会影响到11*a的值】
2*c = N % (10^k) + 10^k;
把这两种情况分别考虑一下。
注意一下细节:
1.a和b不能同时为零
2.b的取值范围是0~9,如果b的值等于10,一定是产生进位的情况
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm> using namespace std; const int MAXN = ;
int ans[MAXN];
int Ten[]; void init()
{
Ten[] = ;
for ( int i = ; i < ; ++i )
Ten[i] = Ten[i - ] * ;
return;
} int GetBit( int N )
{
for ( int i = ; i < ; ++i )
if ( Ten[i] > N ) return i;
return -;
} int main()
{
init();
int N;
while ( scanf( "%d", &N ) != EOF && N != )
{
int cnt = ;
int limit = GetBit(N);
for ( int k = ; k < limit; ++k )
{
int a, b, c;
int mi = Ten[k];
int temp = N / mi;
a = temp / ;
b = temp % ;
c = ( N % mi ) / ; if ( ( a || b ) && b < && a*mi* + b*mi + c + a*mi + c == N )
ans[cnt++] = a*mi* + b*mi + c; --b;
c = ( N % mi + mi ) / ;
//b>=0不小心写成了b>0
if ( ( a || b ) && b >= && a*mi* + b*mi + c + a*mi + c == N )
ans[cnt++] = a*mi* + b*mi + c;
} sort( ans, ans + cnt );
cnt = unique( ans, ans + cnt ) - ans; if ( cnt == ) puts("No solution.");
else
{
for ( int i = ; i < cnt; ++i )
{
if ( i ) putchar(' ');
printf( "%d", ans[i] );
}
puts("");
}
}
return ;
}
HDU 1271 整数对(思路题)的更多相关文章
- hdu 1271 整数对
看了别人的解题报告a了, 大致思路就是 A=a+b*10^k+c*10^(k+1) B=a+c*10^k (在A中取出一位数后) N=A+B=2*a+b*10^k+11*c*10^k 这样就好做了,再 ...
- hdu 5701 中位数计数 思路题
中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- hdu 5056(尺取法思路题)
Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- 51nod P1305 Pairwise Sum and Divide ——思路题
久しぶり! 发现的一道有意思的题,想了半天都没有找到规律,结果竟然是思路题..(在大佬题解的帮助下) 原题戳>>https://www.51nod.com/onlineJudge/ques ...
- Ignatius and the Princess III HDU - 1028 || 整数拆分,母函数
Ignatius and the Princess III HDU - 1028 整数划分问题 假的dp(复杂度不对) #include<cstdio> #include<cstri ...
- POJ 1904 思路题
思路: 思路题 题目诡异地给了一组可行匹配 肯定有用啊-. 就把那组可行的解 女向男连一条有向边 如果男喜欢女 男向女连一条有向边 跑一边Tarjan就行了 (这个时候 环里的都能选 "增广 ...
- BZOJ 3252: 攻略(思路题)
传送门 解题思路 比较好想的一道思路题,结果有个地方没开\(long\) \(long\) \(wa\)了三次..其实就是模仿一下树链剖分,重新定义重儿子,一个点的重儿子为所有儿子中到叶节点权值最大的 ...
- BZOJ 1303: [CQOI2009]中位数图(思路题)
传送门 解题思路 比较好想的思路题.首先肯定要把原序列转化一下,大于\(k\)的变成\(1\),小于\(k\)的变成\(-1\),然后求一个前缀和,还要用\(cnt[]\)记录一下前缀和每个数出现了几 ...
- hdu 4908(思路题)
BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- AngularJS 使用 uppercase 过滤器的表格
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- vue2 自定义全局组件(Loading加载效果)
vue2 自定义全局组件(Loading加载效果) github地址: https://github.com/ccyinghua/custom-global-component 一.构建项目 vue ...
- jquery 层级选择器
关于层级选择器. $("parent > child") 选择所有指定“parent”元素中指定的“child”的直接子项元素. parent :任何有效的选择器. chil ...
- vue项目中使用vuex
1.运行 cnpm i vuex -S 2.导入包 import Vuex from 'vuex' 3.注册vuex到vue中 Vue.use(vuex) 4. var store = new Vue ...
- vs2017中的scanf_s
在visual studio 2017中格式化输入函数不同于其他c/c++编译器使用scanf,而是使用scanf_s. scanf_s相比较于scanf来说更安全,因为使用scanf_s函数需要有一 ...
- Sql Server 查看存储过程最后修改时间
Sql Server 查看存储过程最后修改时间 select * from sys.procedures order by modify_date desc
- (五)、python 函数
一.函数 def 函数名(参数): ... 函数体 ... 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 ...
- VMware虚拟机下载与安装(内附密钥)
VMware下载与安装 一.虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示. 2.根据操作系统选择合适的产品,在这里以Win ...
- Docker(三):部署软件
Docker的镜像文件可以在镜像仓库中进行搜索. 部署软件目录导航: 常用命令 部署 Tomcat 部署 MySQL 部署 Oracle 常用命令 docker的常用命令如下: docker -v , ...
- 4.2 执行环境及作用域【JavaScript高级程序设计第三版】
执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环 ...