POJ 1855 Mint G++最大公约数 最小公倍数 背

xiaoxiao2021-02-28  111

#include <iostream> #include <cstdio> using namespace std; //英语 看博友分析 抄博友程序 最大公约数 最小公倍数 背 int gcd(int a,int b) { if(b==0) { return a; }else { return gcd(b,a%b); } } int lcm[52][52][52][52]; int da[100]; int main() { while(1) { int n,m; cin>>n>>m; if(n==0 && m==0) { break; } for(int i=0;i<n;i++) { cin>>da[i]; } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { for(int k=j+1;k<n;k++) { for(int l=k+1;l<n;l++) { int lcm1=(da[i]*da[j])/gcd(da[i],da[j]); int lcm2=(da[k]*da[l])/gcd(da[k],da[l]); lcm[i][j][k][l]=(lcm1*lcm2)/gcd(lcm1,lcm2); } } } } while(m--) { int zhuo; cin>>zhuo; int left=0x3f3f3f3f; int right=0x3f3f3f3f; for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { for(int k=j+1;k<n;k++) { for(int l=k+1;l<n;l++) { int t=lcm[i][j][k][l]; if(zhuo%t==0) { left=0; right=0; }else { left=min(left,zhuo%t); right=min(right,t-zhuo%t); } } } } } cout<<zhuo-left<<" "<<zhuo+right<<endl; } } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-25133.html

最新回复(0)