题目链接:Click
here~~
题意:
给你一个数n,找到另外一个数x,使得x加上x'等于n,其中,x'为x删去某一位(如第k位,假设最低位为第0位)上的数字后余下数字组成的数。
解题思路:
对于任意一个数字x,在此题环境下,我们都可以把它分解成3部分,k位左边部分,k位部分,k位右边部分。
为了方便起见,我们把这三部分所对应的数字分别记为a,b,c。
则我们可以把x表示成a*10^(k+1) + b*10^k + c,类似地,把x‘表示成a*10^k + c。
从而很容易地,x+x'可以表示成(11*a+b)*10^k + 2*c,由于题目要求找到满足x+x'=n的x,所以我们只需要把n分成上述式子的形式,找到符合条件的a,b,c即可。
需要注意的是,a,b,c需要满足的条件有:
1、b是0~9的某一数字。
2、所求的b的值可能并不是真正的b的值。
因为2*c可能大于10^k,从而使得b的值比真正的b的值多1,由于b本身最大是9,加1后最大是10,而a的系数是11,所以进位不会影响a的值。
3、a、b不能同时为0。
因为当a为0的时候说明k一定在最高位,而一个数的最高位不可能是0(0除外)。
Ps:熟悉了下list的剔除重复元素的用法,呵呵。
#include <list>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int n,a,b,c,x;
list <int> l;
list <int>::iterator it;
while(scanf("%d",&n),n)
{
l.clear();
for(int k=1;k<=n;k*=10)
{
a = n/k / 11;
b = n/k % 11;
if(a + b && b < 10)
{
c = (n - 11*a*k - b*k) / 2;
x = 11*a*k + b*k + 2*c;
if(n == x)
l.push_back(x);
}
b--;
if(a + b && b >= 0)
{
c = (n - 11*a*k - b*k) / 2;
x = 11*a*k + b*k + 2*c;
if(n == x)
l.push_back(x);
}
}
if(l.size()==0)
puts("No solution.");
else
{
l.sort();
l.unique();
it = l.begin();
printf("%d",*it);
for(it=++it;it!=l.end();it++)
printf(" %d",*it);
printf("\n");
}
}
return 0;
}
分享到:
相关推荐
已 AC HDU 1402,利用fft算法实现大整数乘法
本压缩包内包含杭电ACM集训的课件PPT,较为详细的介绍了动态规划,计算几何,贪心算法, 搜索,二分图及其应用,母函数及其应用,组合博弈入门,并查集,递推求解等常用算法
(1)Add(1) Add(1)Add iii jjj,iii和jjj为正整数,表示第iii个营地增加jjj个人(jjj不超过303030) (2)Sub(2)Sub(2)Sub iii jjj ,iii和jjj为正整数,表示第iii个营地减少jjj个人(jjj不超过303030); (3)Query(3)...
杭州电子科技大学hdoj1002,大整数相加问题
欢迎Coders对代码加以指正和提议! 常见问题总结 两整数求平均值 average = min + (max - min) / 2 防止两整数的和越界 整数乘积对比 1.0 * m * m == num 类似乘积对比, 需转为double型, 避免整数溢出 两整数交换 ...
2016. 增量元素之间的最大差值题目描述:给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i]
首先附上题目链接 ... 题目分析 像这种递推公式的问题,n很大...那么可以用矩阵快速幂的方式 求解 k(n) f(n) = ak(n)再通过整数快速幂的方式求解。 还有一个问题:k(n)很大 直接求幂肯定连int64_t都要溢出 那么运用费马小
对于一个大于1正整数n可以分解质因数:n = p1^a1*p2^a2*……pk^ak,则n的正约数的个数就是 :(a1+1)*(a2+1)*……*(ak+1) 其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。 用这个定理求一个数的约数个数是非常快的...
3.DP+四边形不等式优化(hdu 3506 Monkey Party) 4.快餐(hoj 1005 fast food) 5.hoj 1031完全背包Piggy-Bank 6.数字金字塔(hoj 1058Number Triangles) 7.肥猫的表亲(hoj 1061Fat Cat's cousin II) 8.加建楼梯...
2.18.1 HDU4656 卷积取模 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.19 其它公式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.19.1 Polya . . . ....