- 赵翰文 的博客
Z1004题解
- 2023-6-27 16:48:35 @
本人做法
#include<iostream>
using namespace std;
long long mip(long long x,long long p)
{
long long ans=1;
while(p>0)
{
if (p%2==1) ans=ans*x;
p/=2;
x=x*x;
}
return ans;
}
int main()
{
long long n,su;
cin>>n;
su=n-1;
long long a=1,c;
if(n==1)
{
cout<<1<<endl;
return 0;
}
for(long long i=2;i<=n;i++)
{
if(i%2==0)
{
a=2*a-1;
}
else
{
a=2*a+1;
}
c=mip(2,su);//mip可以换成一般的幂运算,经检验,不会超时
}
cout<<a<<'/'<<c<<endl;
return 0;
}
另一位大佬的做法@ 邢家鑫
#include <iostream>
using namespace std;
long long x(long long a,long long b)
{
if(a==1||a==2)
return 1;
return b+x(a-2,b/4);
}
int main()
{
long long a;
cin>>a;
long long b=1;
for(long long i=0;i<a-1;i++)
b*=2;
long long c=b/2;
long long d=x(a,c);
if(a==1||a==0)
{
cout<<a;
}
else
{
cout<<d<<"/"<<b;
}
return 0;
}