#include <bits/stdc++.h> using namespace std; int main(){ int n,m,l_1,s_1,i,j; //记录n个商家每个商家的木头的长度和数量 int a[10010][2]; int r;//最长木头长度 cin>>n>>m>>l_1>>s_1; //第一个商家木头长度和数量 a[1][1] = l_1; a[1][2] = s_1; int max = a[1][1];//最长木头的长度 for(i = 2;i <= n;i++){ a[i][1] = ((a[i - 1][1] * 37011 + 10193) % 10000) + 1; a[i][2] = ((a[i - 1][2] * 73011 + 24793) % 100) + 1; if(a[i][1] > max){ max = a[i][1]; } } //输出每个商家的木头的长度和数量 // for(i = 1;i <= n;i++){ // cout<<a[i][1]<<" "<<a[i][2]<<endl; // } //计算在每个长度下各个商家能供多少根木头 int c;//在每个长度下,各个供应商能供多少根木头 for(i = max;i >= 1;i--){ c = 0; //循环每个供应商 for(j = 1;j <= n;j++){ c += a[j][1] / i * a[j][2]; } //如果根数够 if(c >= m){ r = i; break; } } cout<<r<<endl; return 0; } /************************************************************** Problem: 1561 User: admin Language: C++ Result: Accepted Time:596 ms Memory:2072 kb ****************************************************************/