数字的空洞 水 南邮NOJ 1071
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)字的空洞
時(shí)間限制(普通/Java)?:?1000 MS/?3000 MS?? ? ? ???運(yùn)行內(nèi)存限制 : 65536 KByte總提交 : 209 ? ? ? ?? ? 測(cè)試通過 : 120?
題目描述
在個(gè)位數(shù)中:0,4,6,8,9有一個(gè)共同的特征:數(shù)形上存在空洞,其中8有兩個(gè)相切的空洞。?一個(gè)非負(fù)整數(shù)具有多個(gè)空洞,給定一個(gè)空洞數(shù)目h(0 ≤ h ≤ 510),請(qǐng)你寫一個(gè)計(jì)算機(jī)程序來找出能產(chǎn)生這些空洞的數(shù),要求數(shù)應(yīng)盡可能小,且無前導(dǎo)零。
輸入
一行輸入一個(gè)非負(fù)整數(shù)h,表示空洞的數(shù)目。
輸出
能產(chǎn)生這些空洞的最小數(shù)。
?
注意:輸出部分的結(jié)尾要求包含一個(gè)多余的空行。
樣例輸入
0
1
15
70
樣例輸出
1
0
48888888
88888888888888888888888888888888888
題目來源
“IBM南郵杯”個(gè)人賽2009
思路還是很清晰的,特別情況就是h=1和h=0的情況,其他都可以用統(tǒng)一的方法處理,6是用不到的。實(shí)現(xiàn)代碼如下:
#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");}} }
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://www.cnblogs.com/Tobyuyu/p/4965599.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的数字的空洞 水 南邮NOJ 1071的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中bean的五个作用域简介(
- 下一篇: Linux下Vim工具常用命令