UVa 11344 The Huge One(モード特性)
http://uva.onlinejudge.org/index.php?option=com_オンラインjudge&Itemid=8&category=24&page=show_problem&problem=2319
簡単な点の方法:a*10%m=(℃)*10)%mなので、一つの数を数えて一つずつ型を取って判断すればいいです.
複雑な点の方法:
1.判断は不要です
2.もし1つの整数の未尾三桁が8で割り切れるなら、この数は8で割り切れる.
一つの整数の末尾の二桁が4で割り切れると、この数は4で割り切れる.
一つの整数の位置が2で割り切れると、この数は2で割り切れる.
3. 一つの整数の数字と9で割り切れると、この整数は9で割り切れる.
整数の数字が3で割り切れると、この整数は3で割り切れる.
4. 一つの整数が2と3で割り切れるなら、この数は6で割り切れる.
整数が3と4で割り切れるなら、この数は12で割り切れる.
5. 整数の末尾が0なら、この数は10で割り切れる.
整数の末尾が0または5の場合、この数は5で割り切れる.
6. 7、11で割り算されたと判定する簡単な方法です.
7.判定回数を簡略化する:
8 okであれば、4,2 okです.
9 okであれば、3 okです
2,3 okであれば、6 okです
3,4 okであれば、12 okです.
10 okであれば、5 okです
完全コード:
簡単な点の方法:a*10%m=(℃)*10)%mなので、一つの数を数えて一つずつ型を取って判断すればいいです.
複雑な点の方法:
1.判断は不要です
2.もし1つの整数の未尾三桁が8で割り切れるなら、この数は8で割り切れる.
一つの整数の末尾の二桁が4で割り切れると、この数は4で割り切れる.
一つの整数の位置が2で割り切れると、この数は2で割り切れる.
3. 一つの整数の数字と9で割り切れると、この整数は9で割り切れる.
整数の数字が3で割り切れると、この整数は3で割り切れる.
4. 一つの整数が2と3で割り切れるなら、この数は6で割り切れる.
整数が3と4で割り切れるなら、この数は12で割り切れる.
5. 整数の末尾が0なら、この数は10で割り切れる.
整数の末尾が0または5の場合、この数は5で割り切れる.
6. 7、11で割り算されたと判定する簡単な方法です.
7.判定回数を簡略化する:
8 okであれば、4,2 okです.
9 okであれば、3 okです
2,3 okであれば、6 okです
3,4 okであれば、12 okです.
10 okであれば、5 okです
完全コード:
/*0.022s*/
#include<cstdio>
#include<cstring>
char s[1005];
int a[15];
int main()
{
int t, len, n, i, j, rem;
bool f;
scanf("%d", &t);
while (t--)
{
getchar();
gets(s);
len = strlen(s);
scanf("%d", &n);
for (i = 0; i < n; ++i)
scanf("%d", &a[i]);
f = false;
for (i = 0; i < n; ++i)
{
rem = 0;///remainder
for (j = 0; j < len; ++j)
rem = (rem * 10 + (s[j] & 15)) % a[i];
if (rem)
{
f = true;
break;
}
}
if (f) printf("%s - Simple.
", s);
else printf("%s - Wonderful.
", s);
}
return 0;
}