ブルーブリッジカップ:表札制作————C++
11217 ワード
ブルーブリッジカップ:表札制作————C++
テーマ試験問題A:表札制作本題総得点:5点
【問題の説明】青さんは街の住人のために番地を作ります.
この通りには2020人の住民がいて、番地は1から2020番です.
青ちゃんが表札を作る方法は、まず0から9という数字の文字を作り、最後に必要に応じて文字を表札に貼り付けることです.例えば、表札1017は、文字1、0、1、7を順に貼り付ける必要があります.つまり、1文字0、2文字1、1文字7が必要です.
すみません、すべての1番から2020番の表札を作るには、全部で何文字2が必要ですか?
【答えの提出】結果が空欄になった問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
問題を解く構想.
直接暴力が解けば終わりだ.———————————————
簡単な方法
やり方が愚直である.
テーマ試験問題A:表札制作本題総得点:5点
【問題の説明】青さんは街の住人のために番地を作ります.
この通りには2020人の住民がいて、番地は1から2020番です.
青ちゃんが表札を作る方法は、まず0から9という数字の文字を作り、最後に必要に応じて文字を表札に貼り付けることです.例えば、表札1017は、文字1、0、1、7を順に貼り付ける必要があります.つまり、1文字0、2文字1、1文字7が必要です.
すみません、すべての1番から2020番の表札を作るには、全部で何文字2が必要ですか?
【答えの提出】結果が空欄になった問題で、結果を算出して提出すればいいだけです.本題の結果は1つの整数で、解答を提出する時にこの整数だけを記入して、余分な内容を記入して得点することができません.
問題を解く構想.
直接暴力が解けば終わりだ.———————————————
簡単な方法
#include
using namespace std;
int main()
{
int ans=0,x;
for(int i=1;i<=2020;i++){
x=i;
while(x){
if(x%10==2){
ans++;
}
x/=10;
}
}
cout<<ans;// 624
return 0;
}
やり方が愚直である.
#include
using namespace std;
int main()
{
int a,b,c,d,cnt=0;
for(int i=1;i<=2020;i++){
if(i<10){
if(i==2){
cnt++;
}
}
else if(i>=10&&i<100){
a=i/10,b=i%10;
if(a==2){
cnt++;
}
if(b==2){
cnt++;
}
}
else if(i>=100&&i<1000){
a=i/100,b=i/10%10,c=i%10;
if(a==2){
cnt++;
}
if(b==2){
cnt++;
}
if(c==2){
cnt++;
}
}
else{
a=i/1000,b=i/100%10,c=i%100/10,d=i%100%10;
if(a==2){
cnt++;
}
if(b==2){
cnt++;
}
if(c==2){
cnt++;
}
if(d==2){
cnt++;
}
}
}
cout<<cnt;// 624
return 0;
}