| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
还是G++的问题,求助,哪位解释一下啊?In Reply To:请问pku的G++不认识unsigned long long 吗,急!! Posted by:logics_space at 2009-03-27 21:03:25 上次是1285 这次是1715。。。。
pku 1715
同样的代码 G++超时,C++0ms why??
#include<iostream>
using namespace std;
typedef long long ll;
char num[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
bool visit[16];
char ans[10], cnt;
ll A(ll n, ll m)
{
ll ans = 1;
for(int i = 1; i <= m; i++)ans = ans*(n-i+1);
return ans;
}
void find(ll n, int all, int now)
{
if(now > all){ ans[cnt]=0; return; }
int i = 15;
while(n > A(16- now , all - now))
{
while(visit[i])i--;
i--;
n -= A(16- now , all - now);
}
while(visit[i])i--;
ans[cnt++]=num[i];
visit[i]=true;
find(n, all, now+1 );
}
void search(ll n)
{
int i= 8;
while(n > 15*A(15, i-1) )
{
n-=15* A(15,i-1);
i--;
}
memset(visit, 0, sizeof(visit));
cnt=0;
find(n, i, 1);
}
int main()
{
ll n;
while(scanf("%lld",&n)!=EOF)
{
search(n);
printf("%s\n",ans);
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator