400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > 数字的空洞 水 南邮NOJ 1071

数字的空洞 水 南邮NOJ 1071

时间:2024-05-22 07:52:38

相关推荐

数字的空洞  水 南邮NOJ  1071

数字的空洞

时间限制(普通/Java):1000 MS/3000 MS 运行内存限制 : 65536 KByte

总提交 : 209测试通过 : 120

题目描述

在个位数中:0,4,6,8,9有一个共同的特征:数形上存在空洞,其中8有两个相切的空洞。一个非负整数具有多个空洞,给定一个空洞数目h(0 ≤ h ≤ 510),请你写一个计算机程序来找出能产生这些空洞的数,要求数应尽可能小,且无前导零。

输入

一行输入一个非负整数h,表示空洞的数目。

输出

能产生这些空洞的最小数。

注意:输出部分的结尾要求包含一个多余的空行。

样例输入

0

1

15

70

样例输出

1

0

48888888

88888888888888888888888888888888888

题目来源

“IBM南邮杯”个人赛

思路还是很清晰的,特别情况就是h=1和h=0的情况,其他都可以用统一的方法处理,6是用不到的。实现代码如下:

#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>using namespace std;const int N=510+10;char a[N];int h;int main(){while(scanf("%d",&h)==1){int cnt=0;if(h==0){printf("%d\n",1);}if(h==1){printf("%d\n",0);}if(h>=2){int p=h/2;for(int i=1;i<=p;i++){a[cnt++]='8';}h=h-p*2;if(h==1){a[cnt++]='4';}for(int j=cnt-1;j>=0;j--){printf("%c",a[j]);}printf("\n");}}}

版权声明:本文为博主原创文章,未经博主允许。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。