#include<iostream> using namespace std; long long dp[1000010]; int main(){ long long ans; dp[1]=1;dp[2]=3; for(int i=1;i<1000010;i++){ dp[i]=dp[i-1]+i; } int tc; cin>>tc; // cout<<dp[100000]<<endl; while(tc--){ long long sum=0; long long ans=0; long long n; long long dui; long long res; long long h; long long l; scanf("%lld",&n); bool flag1=true; bool flag2=true; while(flag1){ for(long long i=1;i<1000010;i++){ sum+=dp[i]; //cout<<sum<<endl; if(sum>=n){ dui=i; res=n-sum+dp[i]; // cout<<res<<endl; flag1=false; break; } } } while(flag2){ for(long long i=1;i<1000010;i++){ if(dp[i]>=res){ // cout<<i<<endl; // cout<<dp[i]<<endl; // cout<<ans<<endl; h=i; res=dp[i]-res; l=i-res; flag2=false; break; } } } printf("%lld %lld %lld\n",dui,h,l); } } |
Double click to view unformatted code.