4 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n,a=1,b=1; int main(){ cin>>n; bool q=0; for(int i=1;i<n;i++){ if(a==1&&b%2==0){ q=0; }else if(b==1&&a%2==0){ a++; q=1; continue; }else if(a==1&&b%2==1){ b++; q=0; continue; }else if(b==1&&a%2==1){ q=1; } if(q==0){ a++; b--; }else{ a--; b++; } //cout<<i<<' '<<a<<'/'<<b<<endl; } cout<<a<<'/'<<b; return 0; } -
-1
看到大家都只写了代码,我叹气啊……首先我们来看一下:
这个Z字表是蛇形,那么它如果旋转成一个三角形,那么它的第 层就有 个项,分母和分子之和为 。
我们可以先用一种
巧妙的方法直接求出第 个在第几行。while (m<n){ s++; m+=s; }再来分析一下:
- 如果是第奇数行,那么它就是从下开始。
- 否则,它就是从上开始。 最后遍历一下就可以输出了。
附上代码:
#include<bits/stdc++.h> using namespace std; int n,m=0,s=0,x,y; int main() { cin>>n; while (m<n){ s++; m+=s; } if(s%2==1){ x=s; y=1; for(int i=m-s+2;i<=n;i++){ x--; y++; } cout<<x<<"/"<<y; }else{ x=1; y=s; for(int i=m-s+2;i<=n;i++){ x++; y--; } cout<<x<<"/"<<y; } return 0; } /* freopen(".in","r",stdin); freopen(".out","w",stdout); fclose(stdin); fclose(stdout); */
- 1
信息
- ID
- 5072
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 182
- 已通过
- 130
- 上传者