結果

問題 No.3398 Accuracy of Integer Division Approximate Function 2
コンテスト
ユーザー Mizar
提出日時 2025-12-04 21:14:23
言語 cLay
(20250308-1 + boost 1.90.0)
コンパイル:
clayc _filename_
実行:
./a.out
結果
CE  
実行時間 -
コード長 323 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 5,118 ms
コンパイル使用メモリ 509,904 KB
最終ジャッジ日時 2026-07-18 23:06:39
合計ジャッジ時間 5,857 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
warning: unknown type [cpp_int] for rd (reader) : D
warning: unknown type [cpp_int] for rd (reader) : A
warning: unknown type [cpp_int] for rd (reader) : B
warning: unknown type [cpp_int] for rd (reader) : K
main.cpp: In function ‘int main()’:
main.cpp:397:7: error: no matching function for call to ‘rd(boost::multiprecision::cpp_int&)’
  397 |     rd(D);
      |     ~~^~~
main.cpp:39:13: note: candidate: ‘void rd(int&)’
   39 | inline void rd(int &x){
      |             ^~
main.cpp:39:21: note:   no known conversion for argument 1 from ‘boost::multiprecision::cpp_int’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<> >’} to ‘int&’
   39 | inline void rd(int &x){
      |                ~~~~~^
main.cpp:65:13: note: candidate: ‘void rd(unsigned int&)’
   65 | inline void rd(unsigned &x){
      |             ^~
main.cpp:65:26: note:   no known conversion for argument 1 from ‘boost::multiprecision::cpp_int’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<> >’} to ‘unsigned int&’
   65 | inline void rd(unsigned &x){
      |                ~~~~~~~~~~^
main.cpp:83:13: note: candidate: ‘void rd(long long int&)’
   83 | inline void rd(long long &x){
      |             ^~
main.cpp:83:27: note:   no known conversion for argument 1 from ‘boost::multiprecision::cpp_int’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<> >’} to ‘long long int&’
   83 | inline void rd(long long &x){
      |                ~~~~~~~~~~~^
main.cpp:109:13: note: candidate: ‘void rd(long long unsigned int&)’
  109 | inline void rd(unsigned long long &x){
      |             ^~
main.cpp:109:36: note:   no known conversion for argument 1 from ‘boost::multiprecision::cpp_int’ {aka ‘boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<> >’} to ‘long long unsigned int&’
  109 | inline void rd(unsigned l

ソースコード

diff #
raw source code

ll@T;REP(T){cpp_int@(D,A,B,K),n,a,b,c,d,m,x,g,r,l=0,h,q,s,v;D/=g=gcd(D,A);A/=g;if(A*B%D<1&&D*K+2>A){wt(-1);}else{h=A*B*K+2;while(l+1<h){x=n=(l+h)/2;a=B;b=-A*B/D;c=D;m=A;s=v=d=0;while(a+=c/m*b,c%=m,s+=d/m*b,d%=m,v>?=s,v>?=s+a*~-n+b*(q=(c*~-n+d)/m),n=q){s+=(a+b)*(a<0);d=m+~d;swap(a,b);swap(c,m);}(v<=B*K?l:h)=x;}wt(g*D*l);}}
0