社区讨论

函数递推的return

学术版参与者 7已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lobp74jz
此快照首次捕获于
2023/10/30 00:41
2 年前
此快照最后确认于
2023/11/04 05:21
2 年前
查看原帖
不写return的话没有返回值啊,为什么第一份代码能AC呢?虽然第二份也能A。 区别在Line5,
CPP
#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;
} 
CPP
#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;
} 

回复

6 条回复,欢迎继续交流。

正在加载回复...