iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0

UVA10929

這題會用到ASCII code
https://www.ascii-code.com/

點我進入UVA10929

題目要求:

輸入正整數判斷它是否是11 的倍數,而數字大小可能到1000 digits。

解題:

如何判斷是否為11的倍數,若正整數的奇數位和與偶數位和,兩者差的絕對值是11 的倍數,則為11 的倍數。

關於此題目的小提醒:

由於測資範圍很大,而有限測資時間,故這題用字串來當input,藉由ASCII cod來做轉換。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;//數字會很大,用字串來處理
    
    while(cin>>s)
    {
        if(s=="0")
        {
            break;
        }
        
        int odd=0,even=0;//odd計算奇數位數的加總
                         //even計算偶數位數的加總
        for(int i=0;i<s.length();i++)//為了要計算每個位數,但系統不知道有幾位數,可用s.length()取出位數
         //一定要從i=0開始算
        {
            if(i%2==1)//先找出奇數位數
            {
                odd+=(s[i]-'0');//再將奇數位的值加總
                                /*字串某一個字來計算會用ASCII碼, 因為數字的ASCII碼相連,
                                     所以減掉'0'的ASCII碼就是字串的數字了*/
            }
            else//再找出偶數位
            {
                even+=(s[i]-'0');
            }
        }
        
        if((odd-even)%11==0)//奇偶位數相減能整除11就是11的倍數
        {
            cout<<s<<" is a multiple of 11."<<endl;
        }
        else
        {
            cout<<s<<" is not a multiple of 11."<<endl;
        }
    }
    return 0;
}

UVA10783

點我進入UVA10783

解題思路

這題單純尋找a至b之間的所有奇數和

#include <iostream>

using namespace std;

int main(){
	int n,count=1;
	cin>>n;
	while(n--){
		int a,b;
		int sum=0;
		cin>>a>>b;
		for(int i=a;i<=b;i++){
			if(i%2)sum+=i;
		}
		cout<<"Case "<<count<<": "<<sum<<endl;
		count++;
	}

}

上一篇
[Day 05] UVA10055 &UVA10812& UVA10242
下一篇
[Day 07] UVA10321 &UVA12019
系列文
30天從0開始的NCPC之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言