題目描述
有一根粗細均勻長度為 L 的木棍,先用紅顏色刻度線將它 m 等分,再用藍色刻度線將 其 n 等分( m>n ),然后按所有刻度線將該木棍鋸成小段,計算并輸出長度最長的木棍的長度和根數。
輸入格式
文件中僅有一行,包含三個正整數 L , m 和 n ,兩兩之間用一個空格分隔。
輸出格式
文件包含兩個正整數 a 和 k ,分別表示最長木棍的長度和根數。(為了簡化題目的難度, 所有的測試數據中 m 和 n 一定是 L 的約數)。兩數間用一個空格分隔。
樣例輸入
12 6 4
樣例輸出
2 4
提示
參考代碼
#include <bits/stdc++.h>
#define ll long long
using namespace std;int a[100005], hs[100005];
bool vis[100005] = {false};int main()
{int t = 0, l, n, m, nt, mt;cin>>l>>n>>m;do{t += l / n;vis[t] = true;} while(t <= l);t = 0;do{t += l / m;vis[t] = true;} while(t <= l);int max_cnt = 0, cnt = 0;for(int i = 1; i <= l; i++){if(!vis[i])cnt++;else{cnt++;hs[cnt]++;cnt = 0;}}for(int i = 100005; i >= 1; i--){if(hs[i] > 0){cout<<i<<" "<<hs[i];return 0;}}return 0;
}