更相减损术
更相减损术
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; } }