我代码出问题?
查看原帖
我代码出问题?
373914
才鸟是个菜鸟楼主2020/9/12 10:44
#include<iostream>
using namespace std;
int main(){
	long long n,ans=0,fz=1,cnt=0,c;//定义一个足够大的变量,ans可以记录行数“做分母”,fz拿来当分子,cnt计数,c拿来当工具人。 
	cin>>n;
	while(n>ans){ //当 
		//for(int i=0;i<=n;i++){
			ans++;//记录行数。 
			n-=ans;//减去行数。 
			 
			if(n==0&&ans%2==1){//如果正好够减,表示他是当前行的最后一个,不要忘记根据奇偶性来判断。 
				cout<<ans<<"/"<<"1";
				return 0;//好习惯记心中( 不return就会继续执行程序)。 
			}
			if(n==0&&ans%2==0){
				cout<<"1"<<"/"<<ans;
				return 0;
			} 
	//	}
	}//这时的n,代表在ans-1行第n个。 
	ans++;//要加上一。
	if(ans%2==0){
		for(int j=1;j<n;j++){
			fz++;//分子递增。 
			ans--;//分母递减。 
			cnt++;//计数器记录第几个数。 
			if(cnt==n){//当计数器与n重合。 
				break;//跳出。 
			}
		}
	} 
		if(ans%2==1){
		for(int j=1;j<n;j++){
			c=fz;//事先储存。 
			fz=ans;//分母分子交换。 
			ans=c;//分母分子交换。
			fz--;//分子递减。
			ans++;//分母递增。 
			cnt++;//计数器记录第几个数。 
			if(cnt==n){//当计数器与n重合。 
				break;//跳出。 
			}
		}
	} 
	cout<<fz<<"/"<<ans;
	return 0;//好习惯记心中。 
}

为甚摸不对,求大佬解释

2020/9/12 10:44
加载中...