1 条题解
-
0
C++ :
#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; }
Python :
sr=input().split() n=int(sr[0]) m=int(sr[1]) a=[[0 for i in range(2)]for j in range(n)] a[0][0]=int(sr[2]) a[0][1]=int(sr[3]) for i in range(1,n): a[i][0]=(a[i-1][0]*37011+10193)%10000+1 a[i][1]=(a[i-1][1]*73011+24793)%100+1 s=0 for i in range(n): s=s+a[i][0]*a[i][1] da=s/m l=1 r=da da=int((l+r)//2) while(l<=r): s=0 for i in range(n): s=s+(a[i][0]//da)*a[i][1] if(s>m): l=da+1 elif(s<m): r=da-1 else: break da=int((l+r)//2) print(da)
- 1
信息
- ID
- 2477
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者