結果

問題 No.1862 Copy and Paste
ユーザー vjudge1vjudge1
提出日時 2024-11-13 22:03:08
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 2,666 bytes
コンパイル時間 1,805 ms
コンパイル使用メモリ 173,748 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-11-13 22:03:12
合計ジャッジ時間 3,242 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 AC 2 ms
6,816 KB
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 AC 2 ms
6,820 KB
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#define Endl putchar('\n')
#define D(x)  cerr<<"D:"<<__LINE__<<' '<<#x<<':'<<x<<endl
#define out()  cerr<<"OUT:"
typedef __int128 ll;
using namespace std;
inline ll read(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
inline void write(ll x){if(x>9)write(x/10);putchar(x%10+'0');return;}
const int N=2e5+20;
const ll INF=9e18;
inline ll pw(ll x,ll y){
	ll res=1;
	while(y){
		if(y&1)res=res*x;
		x=x*x;
		y>>=1;
		if(res>INF||x>INF)return INF;
	}
	return res;
}
inline pair<ll,ll> _get(ll x,ll y){
	ll l=0,r=INF,res=0;
	while(l<=r){
		ll mid=l+r>>1;
		if(pw(mid,y)==x)return {mid,mid};
		if(pw(mid,y)<x)l=mid+1;
		else r=mid-1;
	}
	return {min(l,r),max(l,r)};
}
inline ll min(ll x,ll y){
	return x>y?y:x;
}
int main(){
//	freopen("dice.in","r",stdin);
//	freopen("dice.out","w",stdout);
	ll x=read(),y=read(),n=read();
	if(n==1){
		cout<<0<<'\n';
		return 0;
	}
	n--;
	ll res=INF;
	for(int i=1;i<=64;i++){
//		if(i>n)break;
		pair<ll,ll> p=_get(n,i);
//		cout<<p.first<<' '<<p.second<<'\n';
		for(int k=p.first;k<=p.second;k++){
			for(int a=0;a<i;a++){
				ll now=0,f=1,cnt=1;
				for(int j=1;j<i;j++){
					now+=x+y*(j<=a?k-1:k);
					cnt+=f*(j<=a?k-1:k);
					f=cnt;
				}
//				cout<<"update:"<<cnt<<' '<<now<<' '<<k<<' '<<i<<' '<<f<<'\n';
				if(cnt<=n){
					now+=x+y*ceil(1.0*(n-cnt+1)/f);
					cnt+=f*ceil(1.0*(n-cnt+1)/f);
				}
//				cout<<"change"<<now<<'\n';
				res=min(res,now);
			}
			for(int a=0;a<i;a++){
				ll now=0,f=1,cnt=1;
				for(int j=1;j<i;j++){
					now+=x+y*(j>a?k+1:k);
					cnt+=f*(j>a?k+1:k);
					f=cnt;
				}
//				cout<<"update:"<<cnt<<' '<<now<<' '<<k<<' '<<i<<' '<<f<<'\n';
				if(cnt<=n){
					now+=x+y*ceil(1.0*(n-cnt+1)/f);
					cnt+=f*ceil(1.0*(n-cnt+1)/f);
				}
//				cout<<"change"<<now<<'\n';
				res=min(res,now);
			}
			for(int a=0;a<i;a++){
				ll now=0,f=1,cnt=1;
				for(int j=1;j<i;j++){
					now+=x+y*(j>a?k+2:k);
					cnt+=f*(j>a?k+2:k);
					f=cnt;
				}
//				cout<<"update:"<<cnt<<' '<<now<<' '<<k<<' '<<i<<' '<<f<<'\n';
				if(cnt<=n){
					now+=x+y*ceil(1.0*(n-cnt+1)/f);
					cnt+=f*ceil(1.0*(n-cnt+1)/f);
				}
//				cout<<"change"<<now<<'\n';
				res=min(res,now);
			}for(int a=0;a<i;a++){
				ll now=0,f=1,cnt=1;
				for(int j=1;j<i;j++){
					now+=x+y*(j<=a?k-2:k);
					cnt+=f*(j<=a?k-2:k);
					f=cnt;
				}
//				cout<<"update:"<<cnt<<' '<<now<<' '<<k<<' '<<i<<' '<<f<<'\n';
				if(cnt<=n){
					now+=x+y*ceil(1.0*(n-cnt+1)/f);
					cnt+=f*ceil(1.0*(n-cnt+1)/f);
				}
//				cout<<"change"<<now<<'\n';
				res=min(res,now);
			}
		}
	}
	write(res);
	return 0;
}


0