标签:i++ cst gcd mes const color turn -- lse
规律题
对x (0-4) 来说 ,x对S(2n)的贡献为2*x ,对x (5-9) ,x对s(2n)的贡献为2*x-9
我们假设x(5-9)的个数为l个,则S(2n)=2S(n)-9l , 与a*S(n)=b*S(2n) 合并后 式子为S(n)*(2b-a)=9bl
S(n):l = 9b:(2b-a)
即S(n)=9b/gcd , l=(2b-a)/gcd
如果5*l > s || l<0 输出0
否则,贪心,数的大尽量往后放
c++ code:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N=1000; int main() { int digs[N]; int t; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); int s=9*b,l=2*b-a; if(5*l>s || l<0) puts("0"); else{ int g=__gcd(s,l); l/=g;s/=g; s-=5*l; for(int i=0;i<l;i++) { digs[i]=5+min(4,s); s-=min(s,4); } int len=l; while(s) { digs[len++]=min(4,s); s-=min(s,4); } for(int i=len-1;i>=0;i--) printf("%d",digs[i]); puts(""); } } return 0; }
标签:i++ cst gcd mes const color turn -- lse
原文地址:https://www.cnblogs.com/lemon-jade/p/9228985.html