求助,WA 0pts
查看原帖
求助,WA 0pts
592238
Elairin176楼主2023/1/17 13:12
//Code by __dest__ruct__or__(uid=592238)
#include <iostream>
#include <unordered_map>
using namespace std;
#define umap unordered_map
#define ll long long
namespace mySTL{
	inline int max(int a,int b){return a>b?a:b;}
	inline int min(int a,int b){return a<b?a:b;}
	inline int abs(int a){return a<0?-a:a;}
	inline int read(){char c=getchar();int f=1,ans=0;
	while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
	while(c>='0'&&c<='9')ans*=10,ans+=c-'0',c=getchar();
	return ans*f;}
	inline long long readll(){char c=getchar();long long f=1,ans=0;
	while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
	while(c>='0'&&c<='9')ans*=10,ans+=c-'0',c=getchar();
	return ans*f;}
	inline void swap(int &a,int &b){a^=b,b^=a,a^=b;}
	inline void write(int x){if(x<0){putchar('-');x=-x;}
	if(x>=10){write(x/10);}putchar(x%10+'0');}
	inline void writell(long long x){if(x<0){putchar('-');x=-x;}
	if(x>=10){writell(x/10);}putchar(x%10+'0');}
}
using namespace mySTL;
umap<ll,ll>mp;
inline ll f(ll n){
	if(mp[n]){
		return mp[n];
	}
	if(n<=1){
		mp[n]=0;
		return 0;
	}else if(n==2){
		mp[2]=1;
		return 1;
	}else if(n==3){
		mp[3]=3;
		return 3;
	}
	if(n%2==1){
		return mp[n]=f(n/2)+(n/2+1)+n-1;
	}else{
		return mp[n]=2*f(n/2)+n-1;
	}
}
ll x;
int main(void){
	x=readll();
	writell(f(x));
	return 0;
}

对比了题解,发现都差不多,为什么我的 WA 了呢?

2023/1/17 13:12
加载中...