谕神的密码 贪心
Source
第七届ACM趣味程序设计竞赛第二场(正式赛)B
My Solution
w9=s/9;
y9=s-w9*9;
贪心, 最大的前面999....y9...最小的前面为1.......y9 99999
主要是上面这样,然后有几个地方y9=0是额外讨论(1......0899、999.....),没有0时二外讨论,只有1个0笔者也额外讨论了
虽然长,但很多地方差不多,所以好多地方是复制上面部分,然后再修改
比赛的时候,由于先输出最多值,再输出最小值,结果死活不能Accepted
因为题目讲先输出最小值,再最大值。两个小时啊(此水题不过去,自己过意不去,所以硬来),找出这么个bug,我也是欲哭无泪啊,以后多注意
输出顺序,不仅仅是输出格式
我记得高三有一次月考,我来了个F合=ma^2把一个大题错了 和这次感觉很像(┬_┬)
#include
#include
#include
#define LOCAL
using namespace std;
int main()
{
#ifdef LOCAL
freopen("a.txt","r",stdin);
#endif
int T,n,s,w9,y9;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&s);
w9=s/9;
y9=s-w9*9;
if(n==0) printf("-1 -1");
if(s==0) {if(n==1)printf("0 0");else printf("-1 -1");}
else if(s>9*n) printf("-1 -1");
else if(s==9*n){
for(int i=1;i<=n-1;i++)
printf("9");
printf("9 ");
for(int i=1;i<=n;i++)
printf("9");
}
else{
if(n-w9-1==0) {
if(y9==0){
printf("18");
for(int i=1;i<=w9-1;i++)
printf("9");
}
else{
printf("%d",y9);
for(int i=1;i<=w9;i++)
printf("9");
}
}
else{
printf("1");
if(y9==0){
if(n-w9-2==0){
printf("08");
for(int i=1;i<=w9-1;i++)
printf("9");
}
else{
for(int k=1;k<=n-w9-2;k++)
printf("0");
printf("08");
for(int i=1;i<=w9-1;i++)
printf("9");
}
}
else{
if(n-w9-2==0){
printf("%d",y9-1);
for(int i=1;i<=w9;i++)
printf("9");
}
else{
for(int k=1;k<=n-w9-2;k++)
printf("0");
printf("%d",y9-1);
for(int i=1;i<=w9;i++)
printf("9");
}
}
}
printf(" ");
for(int i=1;i<=w9;i++)
printf("9");
printf("%d",y9);
for(int j=1;j<=n-w9-1;j++)
printf("0");
}
if(T) printf("n");
}
return 0;
}
非特殊说明,本站所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-1251/
共有 0 条评论