c++求解獎券題目

ZHUO_SIR發表於2018-10-29

問題的重述:

    有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。
雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10000-99999),要求其中不要出現帶“4”的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。

問題的分析:抽獎活動的獎券號碼是5位數,所以我們可以定義5個變數a,b,c,d,e來表示這五個數,從而可知,這五位數中的最高位是不可以為0和4的,即a=(1,2,3,5,6,7,8,9)共8個數,其餘四位數除了不可以為四之外都行,即b=(0,1,2,3,5,6,7,8,9)共9位數,c=(0,1,2,3,5,6,7,8,9)共9位數,d=(0,1,2,3,5,6,7,8,9)共9位數,e=(0,1,2,3,5,6,7,8,9)共9位數;所以總共有8*9*9*9*9=52488種。

思路:可以通過迴圈來判斷每一位數是否等於4來進行求解。

原始碼如下:

#include "stdafx.h"
#include<iostream>
using namespace std;

int fun()
{
	int sum = 0;
	for(int a=1;a<=9;a++)
		for(int b=0;b<=9;b++)
			for(int c=0;c<=9;c++)
				for (int d = 0; d <= 9; d++)
					for (int e = 0; e <= 9; e++)
					{
						if (a == 4 || b == 4 || c == 4 || d == 4 || e == 4) continue;
						else sum++;
					}
	cout << sum << endl;
	return 0;
}
int main()
{
	fun();
    return 0;
}

結果如下圖:

相關文章