函数递推的return
  • 板块学术版
  • 楼主DuskLight
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/9/29 20:47
  • 上次更新2023/11/4 05:21:41
查看原帖
函数递推的return
534690
DuskLight楼主2021/9/29 20:47

不写return的话没有返回值啊,为什么第一份代码能AC呢?虽然第二份也能A。 区别在Line5,

#include<iostream>
#define ll long long
using namespace std;
ll gcd(ll x, ll y){
	if(y==0) return x;
	gcd(y,x%y);  //辗转相除:gcd(a,b)=gcd(b,a%b) 
}
int main(){
	int x,y,ans=0;
	cin>>x>>y;
	ll z=x*y;
	for(ll i=1;i*i<=z;i++){
		if(z%i==0&&gcd(i,z/i)==x){ //辗转相除法 
			ans+=2; //每组数据可以颠倒,算两个 
		}
	}
	if(x==y)ans--; //如果存在x=y,那么有一组数据的两个值相等,不能颠倒 
	cout<<ans;
} 
#include<iostream>
#define ll long long
using namespace std;
ll gcd(ll x, ll y){
	if(y==0) return x;
	return gcd(y,x%y);  //辗转相除:gcd(a,b)=gcd(b,a%b) 
}
int main(){
	int x,y,ans=0;
	cin>>x>>y;
	ll z=x*y;
	for(ll i=1;i*i<=z;i++){
		if(z%i==0&&gcd(i,z/i)==x){ //辗转相除法 
			ans+=2; //每组数据可以颠倒,算两个 
		}
	}
	if(x==y)ans--; //如果存在x=y,那么有一组数据的两个值相等,不能颠倒 
	cout<<ans;
} 
2021/9/29 20:47
加载中...