1100*B. GCD Length(构造&GCD)

Problem - 1511B - Codeforces

1100*B. GCD Length(构造&GCD)_第1张图片

解析:

        首先构造 z,可以构造成 10^(c - 1) 次方,这样一定满足c位

        然后构造x和y,显然x和y除以10^(c - 1)需要互质,直接找两个符合条件位数的质数即可。

#include
using namespace std;
#define int long long
int t,a,b,c;
int x[100]={0,2,11,101,1009,10007,100003,1000003,10000019,100000007,1000000007};
int y[100]={0,3,13,103,1013,10009,100019,1000033,10000079,100000037,1000000009};
int f(int n){
	int cnt=0;
	while(n) cnt++,n/=10;
	return cnt;
}
signed main(){
	scanf("%lld",&t);
	while(t--){
		scanf("%lld%lld%lld",&a,&b,&c);
		int t=pow(10,c-1);
		int p,q;
		for(int i=1;i<=10;i++) if(f(x[i]*t)==a){
			p=x[i]*t;
			break;
		}
		for(int i=1;i<=10;i++) if(f(y[i]*t)==b){
			q=y[i]*t;
			break;
		}
		printf("%lld %lld\n",p,q);
	}
	return 0;
}

你可能感兴趣的:(codeforces,算法,数据结构,最大公约数,构造)