結果
| 問題 |
No.434 占い
|
| コンテスト | |
| ユーザー |
ei1333333
|
| 提出日時 | 2016-10-14 23:53:42 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,171 bytes |
| コンパイル時間 | 1,912 ms |
| コンパイル使用メモリ | 160,692 KB |
| 実行使用メモリ | 13,640 KB |
| 最終ジャッジ日時 | 2024-11-22 07:22:17 |
| 合計ジャッジ時間 | 22,823 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 21 TLE * 6 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;
const int mod = 9;
int64 modCombination(int n, int r)
{
if(n < 0 || r < 0 || r > n) return 0;
if(n - r < r) r = n - r;
if(r == 0) return 1;
if(r == 1) return n;
int numer[r];
int denom[r];
for(int k = 0; k < r; k++) {
numer[k] = n - r + k + 1;
denom[k] = k + 1;
}
for(int p = 2; p <= r; p++) {
int piv = denom[p - 1];
if(piv > 1) {
int ofst = (n - r) % p;
for(int k = p - 1; k < r; k += p) {
numer[k - ofst] /= piv;
denom[k] /= piv;
}
}
}
long ret = 1;
for(int k = 0; k < r; k++) if(numer[k] > 1) ret = ret * numer[k] % mod;
return ret;
}
int main()
{
int T;
cin >> T;
while(T--) {
string S;
cin >> S;
bool f = false;
for(int j = 0; j < S.size(); j++) {
if(S[j] != '0') break;
if(j + 1 == S.size()) {
cout << 0 << endl;
f = true;
}
}
if(!f) {
int ans = 0;
for(int j = 0; j < S.size(); j++) {
ans = (int) ((ans + (S[j] - '0') * modCombination(S.size() - 1, j)) % 9);
}
cout << (ans == 0 ? 9 : ans) << endl;
}
}
}
ei1333333