社区讨论
函数递推的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 条回复,欢迎继续交流。
正在加载回复...