給一個數字,判斷是不是11的倍數!
--------------------------------------------------
我的作法:
注意!因為位數很大(1000位數),要用string輸入,再將每個字元轉成數字。
11有兩個1,建立兩個盒子!分別代表個位數和十位數~
將輸入的數字從個位數開始交叉放進盒子,
如果盒子值是11的倍數,
那輸入的數字也是11的倍數!
例如:
12345678,
8放個位數的盒子,
7放十位數的盒子,
6放個位數的盒子,
5放十位數的盒子,
5放十位數的盒子,
4放個位數的盒子,
3放十位數的盒子,
3放十位數的盒子,
2放個位數的盒子,
1放十位數的盒子,
1放十位數的盒子,
所以十位數的盒子有1 + 3 + 5 + 7 = 16 ,盒子的值 = 16 * 10 = 16
個位數的盒子有 2 + 4 + 6 + 8 = 20,盒子的值 = 20
16+20=36,
36不是11的倍數!所以12345678也不是11的倍數!
再舉個例子:
5321459,
9放個位數的盒子,
5放十位數的盒子,
神奇寶貝5放十位數的盒子,
4放個位數的盒子,
1放十位數的盒子,
1放十位數的盒子,
2放個位數的盒子,
3放十位數的盒子,
3放十位數的盒子,
5放個位數的盒子,
所以十位數的盒子有 3 + 1 + 5 = 9,盒子的值 = 9 * 10 = 90
個位數的盒子有 5 + 2 + 4 + 9 = 20,盒子的值 = 20
90+20=110,
110是11的倍數!所以5321459也是11的倍數!
--------------------------------------------------
/* 20150930
* hanting
* UVa 10929 - You can say 11
* C++
*/
#include <iostream>
using namespace std;
#define INT(x) x-48
int main()
{
string num;
while(cin>>num and num!="0")
{
int box[2]={0};
for(int i=0;i<num.size();i++)
{
if(i&1) box[1]+=INT(num[i]);
else box[0]+=INT(num[i]);
}
int boxValue=box[0]+box[1]*10;
if(boxValue%11==0)
{
cout<<num<<" is a multiple of 11."<<endl;
}
else
{
cout<<num<<" is not a multiple of 11."<<endl;
}
}
return 0;
}
沒有留言:
張貼留言