赞
踩
代码如下:
#include<bits/stdc++.h> using namespace std; long long dp[2][44900]; int main() { long long n; cin>>n; if(n==1){ cout<<1<<endl; return 0; } dp[0][1]=1; int now=1;//now指向当前行 int last=0;//last指向上一行 long long sum=0;//数字的排列位 for(int i=2;i<=44800;i++){ for(int j=1;j<=i;j++){ dp[now][j]=dp[last][j]+dp[last][j-1]; if(dp[now][j]==n){ //cout<<i<<" "<<j<<endl; sum=(i-1)*i/2+j; cout<<sum<<endl; return 0; } } now=(now+1)%2;//更新一下 last=(last+1)%2; } sum=(n+1)*n/2+2; cout<<sum<<endl; return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。