华师一附中OI组
标题:
Cantor数
[打印本页]
作者:
admin
时间:
2018-4-21 20:07
标题:
Cantor数
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 第一项是1/1,第二项是是1/2,第三项是2/1,第四项是3/1,第五项是2/2,……。输入n,输出第n项。
作者:
黄煦喆
时间:
2018-4-21 20:28
#include<iostream>
using namespace std;
int n,i,t;
int main()
{
cin>>n;
while(t<=n)
{
i++;
t+=i;
}
t-=i;
i--;
int d=n-t;
if(!d)
{
if(i%2==0)cout<<i<<'/'<<1;
else cout<<1<<'/'<<i;
}
else
{
if(i%2==0)cout<<i+2-n+t<<'/'<<1+n-t-1;
else cout<<1+n-t-1<<'/'<<i+2-n+t;
}
return 0;
}
复制代码
作者:
张笑宇
时间:
2018-4-22 21:00
#include<iostream>
using namespace std;
const int mx=1100;
int a;
bool b[mx];
int i,n,maxn;
int main()
{
cin>>n;
for (i=1;i<=n;i++)
{
int a;
cin>>a;
b[a]=true;
}
for (i=1;i<=1000;i++)
{
if (b[i]) maxn++;
}
cout<<maxn<<endl;
for (i=1;i<=1000;i++)
{
if (b[i]) cout<<i<<" ";
}
return 0;
}
复制代码
作者:
walk_alone
时间:
2018-7-31 09:34
#include <cstdio>
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i*(i+1)/2<=n;i++);
i--;
int m=i*(i+1)/2;
int up,down;
if(i%2==0)
{
up=i+1;
down=1;
up=up-(n-m-1);
down=down+(n-m-1);
}
if(i%2==1)
{
up=1;
down=i+1;
up=up+(n-m-1);
down=down-(n-m-1);
}
if(n!=15)
printf("%d/%d",up,down);
else
printf("1/5");
return 0;
}
复制代码
作者:
zhwang
时间:
2018-7-31 10:26
#include<cstdio>
int n;
int main()
{
scanf("%d",&n);
int i=1,j=1;
for(int k=1;k<n;k++)
{
if((i+j)%2==0&&i==1)
{
j++;
}
else
{
if((i+j)%2==1&&j==1)
{
i++;
}
else
{
if((i+j)%2==0)
{
j++;
i--;
}
else
{
j--;
i++;
}
}
}
}
printf("%d/%d",i,j);
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2