#include<cstring>#include<iostream>#include<algorithm>#include<unordered_map>#define x first#define y secondusingnamespace std;typedef pair<int,int> PII;constint N =2500010;int n, m;
unordered_map<int, PII> S;intmain(){
cin >> n;for(int c =0; c * c <= n; c ++)for(int d = c; c * c + d * d <= n; d ++){int t = c * c + d * d;if(S.count(t)==0) S[t]={c, d};}for(int a =0; a * a <= n; a ++)for(int b =0; a * a + b * b <= n; b ++){int t = n - a * a - b * b;if(S.count(t)){printf("%d %d %d %d\n", a, b, S[t].x, S[t].y);return0;}}return0;}
二、蓝桥杯 2017 分巧克力
1. 问题描述
2. 问题解决
#include<iostream>usingnamespace std;typedeflonglong LL;constint N =1e5+10;int h[N], w[N];int n, k;boolcheck(int len){int sum =0;for(int i =1; i <= n; i++)
sum +=(h[i]/ len)*(w[i]/ len);if(sum < k)returnfalse;elsereturntrue;}intmain(){
cin >> n >> k;for(int i =1; i <= n; i ++)scanf("%d %d",&h[i],&w[i]);int l =0, r =1e5;while(l < r){int mid =(l + r +1)>>1;if(check(mid)) l = mid;else r = mid -1;}
cout << r << endl;return0;}