题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956(它放在题库后面的格式有一点点问题啦,所以就把它粘下来,方便读者观看)

BestCoder5 1001  Poor Hanamichi(hdu 4956)  解题报告-LMLPHP

BestCoder5 1001  Poor Hanamichi(hdu 4956)  解题报告-LMLPHP

  题目意思:给出一个范围 [l, r] 你, 问是否能从中找到一个数证明 Hanamichi’s solution 的解法是错的。

Hanamichi’s solution 是这样的:

对于某个数 X,从右往左数它的每一位数字(假设第一位是从0开始数)。它 偶数位的数字之和 -  奇数位的数字之和  = 3  而且 这个 X 满足函数 X mod 11 = 3 。

一开始见数据范围达到1e18 就刹时吓坏了,怕暴力超时,于是比赛的时候,就不敢做咯~~~~点知,原来可以啦,真奇怪= =

一个个枚举即可,题目有点长,意思有点难明,关键是太多干扰的地方,例如这句:

BestCoder5 1001  Poor Hanamichi(hdu 4956)  解题报告-LMLPHP

纯粹是吓人滴 = =

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; bool check(__int64 x)
{
int sum[] = {, };
__int64 t = x;
int p = ;
while (x)
{
sum[p] += x % ;
x /= ;
p = !p;
}
if (sum[]-sum[] != && t % == )
return false;
if (sum[]-sum[] == && t % != )
return false;
return true;
} int main()
{
__int64 l, r;
int T;
while (scanf("%d", &T) != EOF)
{
while (T--)
{
scanf("%I64d%I64d", &l, &r); __int64 tmp = l;
while (tmp <= r)
{
if (!check(tmp))
break;
tmp++;
}
if (tmp > r)
printf("-1\n");
else
printf("%I64d\n", tmp);
}
}
return ;
}
05-04 05:44