会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
c语言源码
Codeforces Round #104 (Div. 2) D. Lucky Number 2 模拟策略
给出我自己的证明:不可能出现fabs(a47-a74)>1。
首先把所有的4排成一排,如果在队首前插入7,则无论插几个只多一个a74;如果在队尾后插入7,则无论插几个只多一个a47,;而在两个4中间插7,不管插几个,a47与a74都同等的只增加一个。故得证。
#include<stdio.h> #include<math.h> #include<stdlib.h> int max(int a,int b){ return a>b?a:b; } int min(int a,int b){ return a>b?b:a; } int main(){ int i; int a4,a7,a47,a74; scanf("%d %d %d %d",&a4,&a7,&a47,&a74); if(fabs(a47-a74)>1){ printf("-1\n"); return 0; } if(a47!=a74){ if(min(a4,a7)<max(a47,a74)){ printf("-1\n"); return 0; } } if(a47==a74){ if(!( (a4>a47 && a7>=a47) || (a4>=a47 && a7>a47) ) ){ printf("-1\n"); return 0; } } if(a47>a74){ for(i=1;i<=a4-a47;i++) printf("4"); for(i=1;i<=a47;i++) printf("47"); for(i=1;i<=a7-a47;i++) printf("7"); printf("\n"); } else if(a47<a74){ printf("74"); for(i=1;i<=a4-a74;i++) printf("4"); for(i=1;i<=a74-2;i++) printf("74"); for(i=1;i<=a7-a74;i++) printf("7"); printf("74\n"); } else if(a47==a74){ if(a4==a47){ for(i=1;i<=a47;i++) printf("74"); for(i=1;i<=a7-a47;i++) printf("7"); printf("\n"); } else{ for(i=1;i<=a4-a47-1;i++) printf("4"); for(i=1;i<=a47;i++) printf("47"); for(i=1;i<=a7-a47;i++) printf("7"); printf("4\n"); } } }
posted on
2012-01-24 14:32
c语言源码
阅读(
183
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告