您的位置:首页 > 编程语言 > Go语言

hdu 4722 Good Numbers(规律题)

2016-03-20 17:25 387 查看
【题意】:

  找GoodNumbers一个数N,如果它每一个位数字之和可以整除10,那么它就是GoodNumbers,比如451就是一个4+5+1=10,求[A,B]之间这样的数的个数

【题解】:

  先写一个暴力代码用来找规律

发现: 0-10 1

    0-100 10

0-1000 100

0-990 99

    0-992 100

    0-997 100

  基本规律为 n/10 + (1或0)

  加1的情况为:n/10*10 到 n 有满足条件的 比如:997: 99 + (990到997是否有满足条件的,如果有则加1)

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <list>
#include <queue>
#include <map>
#include <stack>
using namespace std;
#define L(i) i<<1
#define R(i) i<<1|1
#define INF  0x3f3f3f3f
#define pi acos(-1.0)
#define eps 1e-3
#define maxn 100010
#define MOD 1000000007

long long n,m;
long long slove(long long x)
{
if(x < 0)
return 0;
long long k = x / 10;
for(long long i = k * 10; i <= x; i++)
{
int p = 0;
long long l = i;
for(int j = 0; j < 19; j++)
{
p += l % 10;
l /= 10;
}
if(p % 10 == 0)
k++;
}
return k;
}
int main()
{
int t,C = 1;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
printf("Case #%d: %lld\n",C++,slove(m)-slove(n-1));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: