提出 #69350415
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fileio(x,y) freopen(x,"r",stdin),freopen(y,"w",stdout)
#define tup tuple<int,int,int>
#define fir(x) (get<0>(x))
#define sec(x) (get<1>(x))
#define thr(x) (get<2>(x))
#define pii pair<int,int>
#define bit(x) bitset<x>
#define pb emplace_back
#define i12 __int128_t
#define mt make_tuple
#define mp make_pair
const int mod=998244353;
const int maxn=2e5+10;
string s;
int p[maxn];
int n,k,ttt;
// ax+by = 1
int exgcd(int x,int y,int &a,int &b) { if(!y) return a=1,b=0,x; int t=exgcd(y,x%y,a,b); b=a-x/y*(a=b); return t; }
string getstr(tup x)
{
int xl=fir(x),xr=sec(x),xn=thr(x),xln=to_string(xr).size();
string xx=(xl? to_string(xl):"")+s; for(int i=0; i<xn-xln; i++) xx+='0'; xx+=(xn? to_string(xr):"");
return xx;
}
bool cmp(tup x,tup y)
{
// cerr<<fir(x)<<' '<<sec(x)<<' '<<thr(x)<<'\n';
int xl=fir(x),xn=thr(x),xln=to_string(xl).size()-(!xl),xtot=xln+n+xn;
int yl=fir(y),yn=thr(y),yln=to_string(yl).size()-(!yl),ytot=yln+n+yn;
if(xtot!=ytot) return xtot<ytot;
return getstr(x)<getstr(y);
}
void work()
{
/* Code */
ttt=0;
cin>>k>>s; int val=0; n=s.size();
int x=0,kk=k; while(kk) x++,kk/=10;
int p10s=1; tup tar(1e8,1e8,11);
for(int i=0; i<n; i++) val=(val*10+s[i]-'0')%k,p10s=p10s*10%k;
for(int r=0,rval=val; r<=x/2; r++,rval=rval*10%k)
{
for(int rv=0; rv<p[r]; rv++)
{
int v=(rval+rv)%k;
int lbase=p10s*(p[r]%k)%k;
// calc min x -> x*lbase + v = 0 (mod k)
// x*lbase + pk = k - v
// cerr<<r<<' '<<rv<<' '<<p10s<<' '<<lbase<<' '<<val<<' '<<v<<' '<<k<<'\n';
tup res;
// if(v)
{
// 10x+15p=10 -> 2x+3p=2
int x,p; int g=exgcd(lbase,k,x,p);
if((k-v)%g) continue;
int c=(k-v)/g; x*=c;
// cerr<<x<<' '<<p*c<<'\n';
int kk=k/g,minx=x%kk+kk*(x%kk<0);
res=mt(minx,rv,r);
}
// else res=mt(0,rv,r);
if(cmp(res,tar)) tar=res;
}
}
int rval=val*(p[x-x/2]%k)%k;
for(int l=x/2; l>=0; l--,rval=rval*10%k)
{
int r=x-l;
for(int lv=0; lv<p[l]; lv++)
{
int v=lv%k*p10s%k*p[r]%k;
(v+=rval)%=k;
// calc min x -> x + v = 0 (mod k)
int x=k-v;
if(x>=p[r]) continue;
if(cmp(mt(lv,x,r),tar)) tar=mt(lv,x,r);
}
}
// cerr<<fir(tar)<<' '<<sec(tar)<<' '<<thr(tar)<<'\n';
cout<<getstr(tar)<<'\n';
return;
}
signed main()
{
// fileio(".in",".out");
ios::sync_with_stdio(false);
cin.tie(0);
int t,stTime=clock();
cin>>t;
p[0]=1; for(int i=1; i<=18; i++) p[i]=p[i-1]*10;
while(t--) work();
// cerr<<"Time : "<<(double)(clock()-stTime)/CLOCKS_PER_SEC<<'\n';
return 0;
} // Cellinia Texas.
提出情報
提出日時
2025-09-14 22:51:40+0900
問題
G - Small Multiple 2
ユーザ
NINLER
言語
C++ 20 (gcc 12.2)
得点
0
コード長
3059 Byte
結果
WA
実行時間
513 ms
メモリ
5428 KiB
コンパイルエラー
Main.cpp: In function ‘long long int exgcd(long long int, long long int, long long int&, long long int&)’:
Main.cpp:27:99: warning: operation on ‘a’ may be undefined [-Wsequence-point]
27 | int exgcd(int x,int y,int &a,int &b) { if(!y) return a=1,b=0,x; int t=exgcd(y,x%y,a,b); b=a-x/y*(a=b); return t; }
| ~~^~~
Main.cpp: In function ‘int main()’:
Main.cpp:101:11: warning: unused variable ‘stTime’ [-Wunused-variable]
101 | int t,stTime=clock();
| ^~~~~~
ジャッジ結果
セット名
Sample
All
得点 / 配点
0 / 0
0 / 600
結果
セット名
テストケース
Sample
00-sample-01.txt
All
00-sample-01.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt, 01-37.txt, 01-38.txt, 01-39.txt, 01-40.txt, 01-41.txt, 01-42.txt, 01-43.txt, 01-44.txt, 01-45.txt, 01-46.txt, 01-47.txt, 01-48.txt, 01-49.txt, 01-50.txt, 01-51.txt, 01-52.txt, 01-53.txt, 01-54.txt, 01-55.txt, 01-56.txt, 01-57.txt, 01-58.txt
ケース名
結果
実行時間
メモリ
00-sample-01.txt
AC
3 ms
3568 KiB
01-01.txt
AC
6 ms
4136 KiB
01-02.txt
WA
5 ms
3708 KiB
01-03.txt
WA
3 ms
3620 KiB
01-04.txt
WA
1 ms
3580 KiB
01-05.txt
AC
9 ms
5344 KiB
01-06.txt
AC
6 ms
3700 KiB
01-07.txt
WA
5 ms
3652 KiB
01-08.txt
AC
3 ms
3572 KiB
01-09.txt
AC
9 ms
5356 KiB
01-10.txt
AC
47 ms
3704 KiB
01-11.txt
AC
284 ms
3644 KiB
01-12.txt
AC
273 ms
3580 KiB
01-13.txt
WA
16 ms
3612 KiB
01-14.txt
WA
73 ms
3656 KiB
01-15.txt
WA
55 ms
3440 KiB
01-16.txt
AC
6 ms
4292 KiB
01-17.txt
WA
5 ms
3700 KiB
01-18.txt
WA
3 ms
3756 KiB
01-19.txt
WA
1 ms
3568 KiB
01-20.txt
AC
8 ms
5320 KiB
01-21.txt
AC
6 ms
3632 KiB
01-22.txt
AC
5 ms
3640 KiB
01-23.txt
WA
3 ms
3636 KiB
01-24.txt
AC
12 ms
5340 KiB
01-25.txt
AC
57 ms
3708 KiB
01-26.txt
AC
282 ms
3704 KiB
01-27.txt
AC
278 ms
3572 KiB
01-28.txt
AC
12 ms
3708 KiB
01-29.txt
WA
69 ms
3640 KiB
01-30.txt
WA
62 ms
3580 KiB
01-31.txt
WA
8 ms
4840 KiB
01-32.txt
WA
69 ms
3704 KiB
01-33.txt
WA
403 ms
3480 KiB
01-34.txt
WA
444 ms
3560 KiB
01-35.txt
AC
13 ms
5200 KiB
01-36.txt
WA
22 ms
3712 KiB
01-37.txt
AC
129 ms
3640 KiB
01-38.txt
AC
130 ms
3528 KiB
01-39.txt
AC
12 ms
5384 KiB
01-40.txt
AC
49 ms
3780 KiB
01-41.txt
AC
276 ms
3636 KiB
01-42.txt
AC
269 ms
3568 KiB
01-43.txt
AC
12 ms
5332 KiB
01-44.txt
AC
55 ms
3560 KiB
01-45.txt
AC
374 ms
3520 KiB
01-46.txt
AC
346 ms
3580 KiB
01-47.txt
AC
10 ms
5428 KiB
01-48.txt
AC
61 ms
3692 KiB
01-49.txt
AC
351 ms
3776 KiB
01-50.txt
AC
339 ms
3508 KiB
01-51.txt
AC
9 ms
4832 KiB
01-52.txt
WA
80 ms
3760 KiB
01-53.txt
WA
513 ms
3604 KiB
01-54.txt
WA
511 ms
3500 KiB
01-55.txt
AC
8 ms
4628 KiB
01-56.txt
WA
15 ms
3680 KiB
01-57.txt
WA
57 ms
3624 KiB
01-58.txt
WA
67 ms
3576 KiB