2019藍橋杯求餘問題

2021-09-29 15:22:28 字數 1755 閱讀 6563

判斷乙個的尾數 判斷乙個數所包含某數字

1.求尾數的情況相對簡單 直接用所求的數與10取餘(n%10),再進行判斷即可。

2.求數中是否包含某數字的話,在求餘判斷的情況下還要判斷是否已經到達數字的末位了。

下面用藍橋杯的題目進行講解

1.特別數的和小明對數字中含有 2、0、1、9 的數字很感興趣,在 1 到 40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574

請問,在1到n中,所有這樣的數的和是多少

【輸入格式】

輸入一行包含兩個整數 n。

【輸出格式】

輸出一行,包含乙個整數,表示滿足條件的數的和。

【樣例輸入】

40【樣例輸出】

574【評測用例規模與約定】

對於 20% 的評測用例, 1 ≤ n ≤ 10。

對於 50% 的評測用例, 1 ≤ n ≤ 100。

對於 80% 的評測用例, 1 ≤ n ≤ 1000。

對於所有評測用例, 1 ≤ n ≤ 10000。

解題思路:這是一道典型的求乙個數是否包含某數字的問題,它的解法與上面2中所說的解法類似。我們應該先從尾數的情況開始考慮,對所求的數進行求模,看是否包含這個尾數。接著不斷地與10相除,讓它不斷地取出上一位,這時再進行相應的判斷(例如223%10的結果並不會滿足尾數的情況,這時可以通過與10相除得到22,這時再與10求模,便可得知它是滿足情況的解)。

核心**

//判斷尾數是否含有1,2,9,0

public static boolean check(int n)

if((n/10==0)&&(n%10!=1||n%10!=2||n%10!=9))

else

return check(n/10); // 檢測數字的上1位

}

全部**

public class 特別的數 

if((n/10==0)&&(n%10!=1||n%10!=2||n%10!=9))

else

return check(n/10); }

public static void main(string args)

} s.close();

system.out.println(sum);

}}

2. 數的分解

【問題描述】把 2019 分解成 3 個各不相同的正整數之和,並且要求每個正整數都不包含數字 2 和 4,一共有多少種不同的分解方法?注意交換 3 個整數的順序被視為同一種方法,例如 1000+1001+18 和1001+1000+18 被視為同一種。

解題思路:同上(注意為了沒有重複的分解方法應該確保分解出來的3個數a,b,c的大小為 a全部**

public class 數的分解 }}

}} system.out.println(count);

} /**

* 檢查每個正整數是否包含數字2 和4

* @param a

* @return

*/public static boolean check(int a)

if(a%10==2||a%10==4)

else

return check(a/10);

}}

藍橋杯 求閏年

問題描述 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 1.年份是4的倍數而不是100的倍數 2.年份是400的倍數。其他的年份都不是閏年。輸入格式 輸入包含乙個整數y,表示當前的年份。輸出格式 輸出一行,如果給定的年份是閏年,則輸出yes,否則輸出no。說明 當試題指定你...

藍橋杯2019初賽 迷宮

迷宮 下圖給出了乙個迷宮的平面圖,其中標記為1 的為障礙,標記為0 的為可 以通行的地方。010000 000100 001001 110000 迷宮的入口為左上角,出口為右下角,在迷宮中,只能從乙個位置走到這 個它的上 下 左 右四個方向之一。對於上面的迷宮,從入口開始,可以按drrurrdddr...

藍橋杯2019初賽 A組

修改陣列題目描述 給定乙個長度為n 的陣列a a1,a2,an 陣列中有可能有重複出現的整數。現在小明要按以下方法將其修改為沒有重複整數的陣列。小明會依次修改a2,a3,an。當修改ai 時,小明會檢查ai 是否在a1 ai 1 現過。如果出現過,則小明會給ai 加上1 如果新的ai 仍在之前出現過...