結果
| 問題 |
No.528 10^9と10^9+7と回文
|
| コンテスト | |
| ユーザー |
kosakkun
|
| 提出日時 | 2017-06-09 23:33:17 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,736 bytes |
| コンパイル時間 | 1,087 ms |
| コンパイル使用メモリ | 99,444 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-09-22 19:19:07 |
| 合計ジャッジ時間 | 1,842 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 4 WA * 24 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
#include <iomanip>
#include <deque>
#include <unordered_map>
using namespace std;
typedef long long ll;
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
#define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end())
#define MOD1 1000000000LL
#define MOD2 1000000007LL
int main() {
string N; cin >> N;
if(N.size() == 1) {
cout << N[0] << endl;
cout << N[0] << endl;
return 0;
}
ll ans1 = -9;
ll ans2 = -9;
ll add = 9;
ll half_d = (ll) N.size() / 2 + (ll) N.size() % 2;
for(ll i = 0; i <= half_d; i++) {
if(i % 2 == 0 && i > 0) {
add *= 10;
add += 9;
}
ans1 += add;
ans2 += add;
ans1 %= MOD1;
ans2 %= MOD2;
}
bool flag = true;
REP(i,N.size() / 2) {
if(N[i] < N[N.size() - 1 - i]) {
flag = true;
break;
} else if(N[i] > N[N.size() - 1 - i]) {
flag = false;
break;
}
}
ll sum1 = 0;
ll sum2 = 0;
REP(i,N.size() / 2) {
sum1 *= 10;
sum1 += N[i] - '0';
sum1 %= MOD1;
sum2 *= 10;
sum2 += N[i] - '0';
sum2 %= MOD2;
}
if(!flag) sum1--,sum2--;
ans1 += sum1;
ans2 += sum2;
ans1 %= MOD1;
ans2 %= MOD2;
cout << ans1 << endl;
cout << ans2 << endl;
return 0;
}
kosakkun