更相减损术
更相减损术
https://ac.nowcoder.com/acm/problem/22164
其实用纸举例写一遍就出来了:
将两个运算数的位置定下来:大的放在前面;
得到的差是下一个的因数。(先不管这些知道能用上就行)
开始推
n1 = 5; n2 = 7;
change...
n1 = 7; n2 = 5;
7 - 5 = 2
n1 = 2; n2 = 5
change...
n1 = 5; n2 = 2;
5 - 2 = 3;
n1 = 3; n2 = 2;
change...
3 - 2 = 1
n1 = 1; n2 = 2;
change...
n1 = 2; n2 = 1;
2 - 1 = 1;
n1 = 1; n2 = 1;
1 - 1 = 0;
#include<cstdio>
void change(int &n1, int &n2);
int main(){
int n1, n2;
scanf("%d %d", &n1, &n2);
while(n1 != 0){
change(n1, n2);
n1 = n1 - n2;
}
printf("%d", n2);
return 0;
}
void change(int &n1, int &n2){
if(n2 > n1){
int temp = n2;
n2 = n1;
n1 = temp;
}
}
查看14道真题和解析