信息学奥赛一本通 1090:含k个3的数 | OpenJudge NOI 1.5 30
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1090:含k个3的数 | OpenJudge NOI 1.5 30
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1090:含k個3的數(shù)
OpenJudge NOI 1.5 30:含k個3的數(shù)
【題目考點】
1. 分離整數(shù)的各位數(shù)字
對于數(shù)字a,a%10可以取到其個位,a/=10(整除)可以去掉其當前個位。
重復這一過程,即可從低位到高位分離各位上的數(shù)字。
例:分離數(shù)字123的各位數(shù)
| 123 | 3 | 12 |
| 12 | 2 | 1 |
| 1 | 1 | 0 |
每次循環(huán)中,a變?yōu)閍/10,循環(huán)中取a%10,為當前a的個位,即為分離出的數(shù)字。當a為0時循環(huán)結束。
其原理為對數(shù)字的按位權展開。
例:輸入一個整數(shù),從低位到高位輸出其各位數(shù)字,并用空格分隔,代碼為:
2. 判斷整除
【解題思路】
- 首先判斷該數(shù)字是不是19的倍數(shù)
- 如果是,那么統(tǒng)計該數(shù)字中有幾位是數(shù)字3
- 如果數(shù)字3有k個,那么輸出YES
- 否則輸出NO
- 如果不是,直接輸出NO
- 如果是,那么統(tǒng)計該數(shù)字中有幾位是數(shù)字3
【題解代碼】
解法1:
#include <bits/stdc++.h> using namespace std; int main() {int m, k;cin>>m>>k;int c = 0;//統(tǒng)計數(shù)字m中3的個數(shù) if (m % 19 == 0)//如果m是19的倍數(shù){while(m > 0){if (m % 10 == 3)c++;m /= 10;}if (c == k)//如果m的各位數(shù)字中有k個3 cout<<"YES"<<endl;elsecout<<"NO"<<endl;}elsecout<<"NO"<<endl;return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1090:含k个3的数 | OpenJudge NOI 1.5 30的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 2022:【例4.7】
- 下一篇: 信息学奥赛一本通 1101:不定方程求解