結果
| 問題 |
No.2649 [Cherry 6th Tune C] Anthem Flower
|
| コンテスト | |
| ユーザー |
tnakao0123
|
| 提出日時 | 2024-04-25 15:34:26 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 296 ms / 2,000 ms |
| コード長 | 1,416 bytes |
| コンパイル時間 | 567 ms |
| コンパイル使用メモリ | 54,892 KB |
| 実行使用メモリ | 8,300 KB |
| 最終ジャッジ日時 | 2024-11-08 02:38:23 |
| 合計ジャッジ時間 | 4,885 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 35 |
ソースコード
/* -*- coding: utf-8 -*-
*
* 2649.cc: No.2649 [Cherry 6th Tune C] Anthem Flower - yukicoder
*/
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
/* constant */
const int MAX_N = 4000000;
/* typedef */
typedef long long ll;
typedef vector<int> vi;
/* global variables */
char s[MAX_N + 4];
/* subroutines */
void printv(vi &a) {
for (int i = a.size() - 1; i >= 0; i--) printf("%d", a[i]);
putchar('\n');
}
void incv(vi &a) {
int co = 1;
for (auto &ai: a) {
int di = ai + co;
ai = di % 10;
co = di / 10;
}
if (co > 0) a.push_back(co);
}
void divv(vi &a, int b) {
int r = 0;
for (int i = a.size() - 1; i >= 0; i--) {
ll di = (ll)r * 10 + a[i];
a[i] = di / b;
r = di % b;
}
while (! a.empty() && a.back() == 0) a.pop_back();
}
int modv(vi &a, int b) {
int r = 0;
for (int i = a.size() - 1; i >= 0; i--)
r = ((ll)r * 10 + a[i]) % b;
return r;
}
/* main */
int main() {
int tn;
scanf("%d", &tn);
while (tn--) {
int m;
scanf("%s%d", s, &m);
int n = strlen(s);
vi a(n);
for (int i = 0; i < n; i++) a[i] = s[n - 1 - i] - '0';
vi b(a);
incv(b);
//printv(a), printv(b);
if (! (a[0] & 1)) divv(a, 2);
else divv(b, 2);
//printv(a), printv(b);
int ra = modv(a, m), rb = modv(b, m);
int r = (ll)ra * rb % m;
printf("%d\n", r);
}
return 0;
}
tnakao0123