这是本文档旧的修订版!
GCD的递归。比较难的C语言练习。
<hidden>
#include<stdio.h> long long int t, tmp, ans[20005], top = 1; long long gcd(long long a,long long b) { return b ? gcd(b, a % b) : a; } void solve(long long int n, long long int m, long long int res) { if(n > m) { tmp = m; m = n; n = tmp; } if(res == 0) { return; } long long int k = m - m % n; while(k--) { ans[top++] = n; } solve(n, m % n, n * (m % n)); return; } int main() { scanf("%d",&t); while(t--) { long long n, m; top = 1; scanf("%lld%lld", &n, &m); solve(n, m, n * m); long long l = n + m - gcd(n, m); printf("%lld\n", l); int i; for(i=1;i<=l;i++) { printf("%lld ",ans[i]); } printf("\n"); } }
<hidden>