結果
問題 | No.1252 数字根D |
ユーザー |
![]() |
提出日時 | 2020-10-09 22:02:46 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 1,551 bytes |
コンパイル時間 | 2,415 ms |
コンパイル使用メモリ | 193,416 KB |
最終ジャッジ日時 | 2025-01-15 04:41:12 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 14 |
ソースコード
#define _USE_MATH_DEFINES#include <bits/stdc++.h>using namespace std;#define FOR(i,m,n) for(int i=(m);i<(n);++i)#define REP(i,n) FOR(i,0,n)#define ALL(v) (v).begin(),(v).end()#define int long longusing ll = long long;constexpr int INF = 0x3f3f3f3f;constexpr ll LINF = 0x3f3f3f3f3f3f3f3fLL;constexpr double EPS = 1e-8;constexpr int MOD = 1000000007;// constexpr int MOD = 998244353;constexpr int dy[] = {1, 0, -1, 0}, dx[] = {0, -1, 0, 1};constexpr int dy8[] = {1, 1, 0, -1, -1, -1, 0, 1}, dx8[] = {0, -1, -1, -1, 0, 1, 1, 1};template <typename T, typename U> inline bool chmax(T &a, U b) { return a < b ? (a = b, true) : false; }template <typename T, typename U> inline bool chmin(T &a, U b) { return a > b ? (a = b, true) : false; }struct IOSetup {IOSetup() {cin.tie(nullptr);ios_base::sync_with_stdio(false);cout << fixed << setprecision(20);}} iosetup;ll f(int n) {return 1LL * n * (n + 1) / 2;}int root(int a, int d) {if (a < d) return a;int ans = 0;while (a > 0) {ans += a % d;a /= d;}return root(ans, d);}void solve() {int d, a, b; cin >> d >> a >> b;ll ans = 0;int l = root(a, d), want = min(d - l, b - a + 1);ans += f(l + want - 1) - f(l - 1);a += want;// cout << a << ' ' << b << '\n';if (a <= b) {int r = root(b, d);want = min(r, b - a + 1);ans += f(r) - f(r - want);b -= want;}ans += f(d - 1) * ((b - a + 1) / (d - 1));cout << ans << '\n';}signed main() {int t; cin >> t;while (t--) solve();return 0;}