2016年10月13日 星期四

[UVA] 11344 - The Huge One

題目連結

題意:

給一超大整數 N,和幾個int
問這幾個int能不能全部都整除N
可以 -> Wonderful
不行 -> Simple
**************************************************

我的作法:

17 % 5 = ((1%5)*10+7)%5
不需要做大數運算...

小技巧:
[字元轉數字]
字元&15
ex: '8' & 15 = 8
因為數字0到9最多使用4個bit
剛好是字元後4個bit
要看最後4個bit是什麼就是做 &1111 也就是 &15
**************************************************

程式碼:


/* 題目: UVa 11344 - The Huge One
 * Language: C++
 * Created on: 2016年10月14日
 *   Author: hanting
 */
#include <iostream>
using namespace std;
string num;
int numMod(int k)
{
    int remainder = 0;
    for(int i = 0; i < num.size(); i++)
    {
        remainder *= 10;
        remainder += (num[i]&15);
        remainder %= k;
    }
    return remainder;
}
int main()
{
    int testCase;
    cin >> testCase;
    while(testCase--)
    {
        cin >> num;
        int n;
        cin >> n;
        bool wonderful = true;
        for(int i = 0; i < n; i++)
        {
            int k;
            cin >> k;
            if(numMod(k) != 0)
            {
                wonderful = false;
            }
        }
        if(wonderful)
        {
            cout << num << " - Wonderful." << endl;
        }
        else
        {
            cout << num << " - Simple." << endl;
        }
    }
    return 0;
}

沒有留言:

張貼留言