hdu 5710 Digit-Sum (构造题)

题目链接:hdu 5710 Digit-Sum

题意:

定义S(n)=n的数位和,给你一个a,b让你找一个n使得a*S(n)=b*S(2n)。

题解:

传送门

构造题很少做啊!!

太弱了

 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=a;i<=b;i++)
 3 #define ___ freopen("in.txt","r",stdin);
 4 using namespace std;
 5 typedef long long ll;
 6 
 7 int t,a,b,L,S,ed,ans[10001];
 8 
 9 int main()
10 {
11     scanf("%d",&t);
12     while(t--)
13     {
14         scanf("%d%d",&a,&b);
15         L=2*b-a,S=9*b,ed=0;
16         if(L<0||L*5>S){puts("0");continue;}
17         if(L==0){puts("0");continue;}
18         int tmp=__gcd(L,S);
19         L/=tmp,S/=tmp,S-=5*L;
20         F(i,1,L)
21         {
22             int mod=min(4,S);
23             S-=mod;
24             ans[++ed]=5+mod;
25         }
26         while(S)
27         {
28             int mod=min(4,S);
29             S-=mod;
30             ans[++ed]=mod;
31         }
32         for(int i=ed;i>=1;i--)printf("%d",ans[i]);
33         puts("");
34     }
35     return 0;
36 }
View Code

 

posted @ 2017-05-22 21:38  bin_gege  阅读(300)  评论(0编辑  收藏  举报