d124 - 3的倍数
題目描述
題目要求判斷一個大整數(以字串形式輸入)是否為 3 的倍數。輸入的數字範圍是 -10^10001 到 10^10001。
解題思路
由於輸入的數字太大,無法直接使用整數類型儲存,因此需要將輸入的字串轉換為數字,並計算其各位數字的和。根據整數除以 3 的餘數的性質,一個數字是否為 3 的倍數取決於其各位數字的和是否為 3 的倍數。如果各位數字的和為 3 的倍數,則原數字為 3 的倍數,反之則不是。
程式碼首先讀取輸入的字串。然後,計算字串中所有數字字符的總和。如果字串的第一個字符是負號,則跳過負號再計算總和。最後,判斷總和是否為 3 的倍數,並輸出相應的結果。
複雜度分析
- 時間複雜度: O(n),其中 n 是輸入字串的長度。
- 空間複雜度: O(1),因為只使用了常數級別的額外空間。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
string a;
while(cin >> a){
int n=0;
if(a[0]=='-'){
for(int i=1;i<a.length();i++)
n+=a[i]-48;
}
else{
for(int i=0;i<a.length();i++)
n+=a[i]-48;
}
if(n%3==0)
cout << "yes\n";
else
cout << "no\n";
}
}