提交时间:2024-10-07 14:57:15

运行 ID: 33331

#include<bits/stdc++.h> using namespace std; int t,n; int m; long long k; long long xl[100005]; int main(){ cin>>t; while(t--){ cin>>n>>m>>k; if(k==1){ if(n%m==0) { cout<<m<<endl; } else if(m%n==0){ cout<<n<<endl; } else{ cout<<min(n,m)<<endl; } } else if(n%m==0){ int h=n/m; int ans = k/(h-1) *h* m + k%(h) * m - m; if(ans%n==0)ans+=m; cout<<ans<<endl; } else if(m%n==0){ int h=m/n; int ans = k/(h-1) *h* n + (k%(h)) * n - n; if(ans%m==0)ans+=n; cout<<ans<<endl; } else{ int g = __gcd(n,m); int l=n/g+m/g-2; int rp=k%l; long long ans = k/l*(n*m/g); long long v=k%l; // cout<<k/l<< " "<< v<<endl; int a=0,b=0; for(int i = 1;i<=v;i++){ if((a+1)*n<(b+1)*m){ a++; if(i==v) cout<< ans+a*n <<endl; } else{ b++; if(i==v) cout<< ans+b*m <<endl; } } } } }