题目链接:hdu 5710 Digit-Sum
题意:
定义S(n)=n的数位和,给你一个a,b让你找一个n使得a*S(n)=b*S(2n)。
题解:
构造题很少做啊!!
太弱了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }