2015年第六屆藍(lán)橋杯C/C++B組省賽

一燎悍、獎(jiǎng)券數(shù)目

有些人很迷信數(shù)字,比如帶“4”的數(shù)字盼理,認(rèn)為和“死”諧音谈山,就覺得不吉利。
雖然這些說法純屬無稽之談宏怔,但有時(shí)還要迎合大眾的需求奏路。某抽獎(jiǎng)活動(dòng)的獎(jiǎng)券號(hào)碼是5位數(shù)(10000-99999),要求其中不要出現(xiàn)帶“4”的號(hào)碼臊诊,主辦單位請(qǐng)你計(jì)算一下鸽粉,如果任何兩張獎(jiǎng)券不重號(hào),最多可發(fā)出獎(jiǎng)券多少?gòu)垺?/p>

請(qǐng)?zhí)峤辉摂?shù)字(一個(gè)整數(shù))抓艳,不要寫任何多余的內(nèi)容或說明性文字触机。

分析:直接枚舉10000-99999之間的數(shù)字,如果帶4玷或,直接排除儡首;不帶4的,記錄一次偏友,直到枚舉完后輸出蔬胯。

#include <iostream>  
#include <sstream> //字符串流 
#include <string>  
using namespace std;

void i2s(int num,string &str){//將整型轉(zhuǎn)化為字符串 
   stringstream ss;
   ss<<num;
   ss>>str;
}
int main(){
   int ans=0;
   for(int i=10000;i<=99999;i++){
       string s;
       i2s(i,s);
       //如果s中沒有4 
       if(s.find('4')==string::npos)//string::npos表示一個(gè)不存在的位置
       ans++;
   }
   cout<<ans;
   return 0;
}

答案:52488

二、星系炸彈

在X星系的廣袤空間中漂浮著許多X星人造“炸彈”约谈,用來作為宇宙中的路標(biāo)笔宿。
每個(gè)炸彈都可以設(shè)定多少天之后爆炸。
比如:阿爾法炸彈2015年1月1日放置棱诱,定時(shí)為15天泼橘,則它在2015年1月16日爆炸。
有一個(gè)貝塔炸彈迈勋,2014年11月9日放置炬灭,定時(shí)為1000天,請(qǐng)你計(jì)算它爆炸的準(zhǔn)確日期靡菇。

請(qǐng)?zhí)顚懺撊掌谥毓椋袷綖?yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
請(qǐng)嚴(yán)格按照格式書寫厦凤。不能出現(xiàn)其它文字或符號(hào)鼻吮。

方法一:
新建文檔 1.vbs
Msgbox dateadd("d",1000,"2014-11-09")

方法二:Excel或者手算(注意閏年是366天)
2014/11/9到2015/11/9一共是365天,2015/11/9到2016/11/9一共是366天较鼓,2016/11/9到2017/11/9一共是365天椎木,
365+366+365-1000=96天,再?gòu)?017/11/9往回減96天博烂,依次-9=87香椎,-31=56,-30=26禽篱,剩下的26天在8月里面畜伐,31-26=5,所以是2017/8/5

答案:2017-08-05

三躺率、三羊獻(xiàn)瑞

觀察下面的加法算式:


image

其中玛界,相同的漢字代表相同的數(shù)字,不同的漢字代表不同的數(shù)字肥照。

請(qǐng)你填寫“三羊獻(xiàn)瑞”所代表的4位數(shù)字(答案唯一)脚仔,不要填寫任何多余內(nèi)容。

分析:使用next_permutation暴力枚舉0~9數(shù)字可能組成的各個(gè)序列舆绎,對(duì)每一種序列判斷是否滿足上述條件即可鲤脏。

image.png
#include <iostream>
#include<algorithm>
#include<cstring> 
using namespace std;
//a1~a8分別對(duì)應(yīng)“祥瑞生輝三羊獻(xiàn)氣 ” 
 
int main(int argc, char** argv) {
    int a[10]={0,1,2,3,4,5,6,7,8,9};//指定一個(gè)使用0~9數(shù)字的初始序列
    //初始化序列為“0123456789”
    
    do{//每次生成一個(gè)新的排列次序 

        int x=1000*a[1]+100*a[2]+10*a[3]+a[4];
        int y=1000*a[5]+100*a[6]+10*a[7]+a[2];
        int z=10000*a[5]+1000*a[6]+100*a[3]+10*a[2]+a[8];
        if(a[1]==0||a[5]==0) continue; //如若最高位不能為0
        if(x+y==z){
            printf("%d\n",y);
        } 
    }while(next_permutation(a,a+10));
    return 0;
}

答案:1085

四、格子中輸出

StringInGrid函數(shù)會(huì)在一個(gè)指定大小的格子中打印指定的字符串吕朵。
要求字符串在水平猎醇、垂直兩個(gè)方向上都居中。
如果字符串太長(zhǎng)努溃,就截?cái)唷?br> 如果不能恰好居中硫嘶,可以稍稍偏左或者偏上一點(diǎn)。

下面的程序?qū)崿F(xiàn)這個(gè)邏輯梧税,請(qǐng)?zhí)顚憚澗€部分缺少的代碼沦疾。

#include <stdio.h>
#include <string.h>

void StringInGrid(int width, int height, const char* s)
{
    int i,k;
    char buf[1000];
    strcpy(buf, s);
    if(strlen(s)>width-2) buf[width-2]=0;
    
    printf("+");
    for(i=0;i<width-2;i++) printf("-");
    printf("+\n");
    
    for(k=1; k<(height-1)/2;k++){
        printf("|");
        for(i=0;i<width-2;i++) printf(" ");
        printf("|\n");
    }
    
    printf("|");
    
    printf("%*s%s%*s",_____________________________________________);  //填空
   // printf("%*s%s%*s",(width-strlen(buf)-2)/2,"",buf,(width-strlen(buf)-1)/2,""); //""代表空串             
    printf("|\n");
    
    for(k=(height-1)/2+1; k<height-1; k++){
        printf("|");
        for(i=0;i<width-2;i++) printf(" ");
        printf("|\n");
    }    
    
    printf("+");
    for(i=0;i<width-2;i++) printf("-");
    printf("+\n");    
}

int main()
{
    StringInGrid(20,6,"abcd1234");
    return 0;
}

對(duì)于題目中數(shù)據(jù)称近,應(yīng)該輸出:


image

(如果出現(xiàn)對(duì)齊問題,參看下圖所示)

注意:只填寫缺少的內(nèi)容哮塞,不要書寫任何題面已有代碼或說明性文字刨秆。

image
注意:printf("%*s\n",int,str)的含義

如果寫成printf(“%6d”, 123)忆畅,應(yīng)該就不會(huì)陌生了衡未,這是設(shè)置域?qū)挼囊馑肌?同理,%6s也是域?qū)挕? * "修飾符正是用來更靈活的控制域?qū)挕?使用%*s家凯,表示這里的具體域?qū)捴涤珊竺娴膶?shí)參決定
如printf(“%*s”,6, “abc”)就是把”abc”放到在域?qū)挒?的空間中右對(duì)齊缓醋。 
分析:明白了 * 是用變量來控制域?qū)挘敲催@題就簡(jiǎn)單了绊诲,這里應(yīng)該填寫5個(gè)實(shí)參送粱。
然后字符長(zhǎng)度的計(jì)算應(yīng)該用buf而不是s,因?yàn)閎uf才是截?cái)嗪蟮拈L(zhǎng)度掂之,
用s的話葫督,如果s長(zhǎng)度超過了width-2,效果就不對(duì)了

答案:(width-strlen(buf)-2)/2,"",buf,(width-strlen(buf)-2)/2,""

五板惑、九數(shù)組分?jǐn)?shù)

1,2,3...9 這九個(gè)數(shù)字組成一個(gè)分?jǐn)?shù)橄镜,其值恰好為1/3,如何組法冯乘?

下面的程序?qū)崿F(xiàn)了該功能洽胶,請(qǐng)?zhí)顚憚澗€部分缺失的代碼。

#include <stdio.h>

void test(int x[])
{
    int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];//分子 
    int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];//分母 
    
    if(a*3==b) printf("%d / %d\n", a, b);//組成分?jǐn)?shù)為三分之一 
}

void f(int x[], int k)//全排列 
{
    int i,t;
    if(k>=9){
        test(x);
        return;
    }
    
    for(i=k; i<9; i++){
        {t=x[k]; x[k]=x[i]; x[i]=t;}
        f(x,k+1);
        _____________________________________________ // 填空處
    }
}
    
int main()
{
    int x[] = {1,2,3,4,5,6,7,8,9};
    f(x,0);    
    return 0;
}

注意:只填寫缺少的內(nèi)容裆馒,不要書寫任何題面已有代碼或說明性文字姊氓。

分析:f(x,k+1)回溯之后,將交換后的結(jié)果還原使用回朔法喷好。

答案:{t=x[k]; x[k]=x[i]; x[i]=t;}

六翔横、加法變乘法

我們都知道:1+2+3+ ... + 49 = 1225
現(xiàn)在要求你把其中兩個(gè)不相鄰的加號(hào)變成乘號(hào),使得結(jié)果為2015

比如:
1+2+3+...+10 * 11+12+...+27 * 28+29+...+49 = 2015
就是符合要求的答案梗搅。

請(qǐng)你尋找另外一個(gè)可能的答案禾唁,并把位置靠前的那個(gè)乘號(hào)左邊的數(shù)字提交(對(duì)于示例,就是提交10)无切。

注意:需要你提交的是一個(gè)整數(shù)荡短,不要填寫任何多余的內(nèi)容。

分析:窮舉兩個(gè)乘號(hào)的位置哆键,查找滿足條件的位置

#include<iostream>
using namespace std;
int main(){
    for(int i=1;i<=46;i++){//第一個(gè)乘號(hào)位置 
        for(int j=i+2;j<=48;j++)//第二個(gè)乘號(hào)位置 
        if(i*(i+1)-(i+i+1) + j*(j+1)-(j+j+1)==2015-1225)//變?yōu)槌颂?hào)之后與前式差值 
        cout<<i<<" "<<j<<endl; 
    }
    return 0;
}

答案:16

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掘托,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子籍嘹,更是在濱河造成了極大的恐慌闪盔,老刑警劉巖弯院,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泪掀,居然都是意外死亡抽兆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門族淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凭涂,你說我怎么就攤上這事祝辣。” “怎么了切油?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵蝙斜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我澎胡,道長(zhǎng)孕荠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任攻谁,我火速辦了婚禮稚伍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戚宦。我一直安慰自己个曙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布受楼。 她就那樣靜靜地躺著垦搬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艳汽。 梳的紋絲不亂的頭發(fā)上猴贰,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音河狐,去河邊找鬼米绕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馋艺,可吹牛的內(nèi)容都是我干的义郑。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼丈钙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼非驮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雏赦,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤劫笙,失蹤者是張志新(化名)和其女友劉穎芙扎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體填大,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戒洼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了允华。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圈浇。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖靴寂,靈堂內(nèi)的尸體忽然破棺而出磷蜀,到底是詐尸還是另有隱情,我是刑警寧澤百炬,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布褐隆,位于F島的核電站,受9級(jí)特大地震影響剖踊,放射性物質(zhì)發(fā)生泄漏庶弃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一德澈、第九天 我趴在偏房一處隱蔽的房頂上張望歇攻。 院中可真熱鬧,春花似錦梆造、人聲如沸掉伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斧散。三九已至,卻和暖如春摊聋,著一層夾襖步出監(jiān)牢的瞬間鸡捐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工麻裁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箍镜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓煎源,卻偏偏與公主長(zhǎng)得像色迂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子手销,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容