#include <iostream>
using namespace std;
int n,k;
int h[100010],w[100010];
bool check(int x)
{
int sum=0;
for(int i=0;i<n;i++)
{
sum+=(h[i]/x)*(w[i]/x);
if(sum>=k) return true;
}
return false;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>h[i]>>w[i];
}
int l=1,r=100010;
while(l+1<r)
{
int mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
}
cout<<l;
return 0;
}
P8738 [蓝桥杯 2020 国 C] 天干地支
思路:首先确定0004年是甲子年,并以此为基点。
#include <iostream>
using namespace std;
int x;
int main()
{
string s1[]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","kui"};
string s2[]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
cin>>x;
if(x<4){
if(x==3) cout<<"kuihai";
if(x==2) cout<<"renxu";
if(x==1) cout<<"xinyou";
return 0;
}
x=(x-4)%60;60年一个循环,找出这个数在循环里的位置
int a=x%10,b=x%12;然后通过求余数就可以找到答案
cout<<s1[a]<<s2[b];
return 0;
}
P8772 [蓝桥杯 2022 省 A] 求和
思路:先算前缀和,然后就遍历
#include <iostream>
using namespace std;
int n;
long long sum;
int a[200010];
long long q[200010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
q[i]=q[i-1]+a[i];
}
for(int i=1;i<n;i++)
{
sum+=(q[n]-q[i])*a[i];
}
cout<<sum;
return 0;
}