这三题 都挺水的 考读题。。
A
题意 给定n种面值的钱 输出所不能表示的最小价值 若都能表示则输出-1
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int n;
int ary[1010];
while(cin>>n)
{
for(int i = 0;i < n;i ++)
cin>>ary[i];
sort(ary,ary+n);
if(ary[0] == 1)
{
cout<<"-1"<<endl;
}
else
{
cout<<"1"<<endl;
}
}
return 0;
}
B
题意 给一个矩形板和两张图片的边长 问这两张图片能不能不重叠的粘在板上 分情况就好
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
/**
分析
长 a1+a2 a1+b2 a2+b1 b1+b2
宽 max(b1,b2) max(b1,a2) max(a1,b2) max(a1,a2)
**/
int main()
{
int a,b,a1,b1,a2,b2;
while(cin>>a>>b>>a1>>b1>>a2>>b2)
{
int k = a1+a2;
int w = a1+b2;
int q = a2+b1;
int p = b1+b2;
int kmax = max(b1,b2);
int wmax = max(b1,a2);
int qmax = max(a1,b2);
int pmax = max(a1,a2);
if(a < b) swap(a,b);// a is more than b
if(k < kmax) swap(k,kmax);
if(w < wmax) swap(w,wmax);
if(q < qmax) swap(q,qmax);
if(p < pmax) swap(p,pmax);
if((k <= a && kmax <= b)||(w <= a && wmax <= b)||(q <= a && qmax <= b)||(p <= a && pmax <=b))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
C
题意 顺时针给定一个六边形的六条边长 求边长为1的正三角行的个数
边长为n的正三角形中边长为1的正三角形的个数为n*n个 先补全 再减去就行了
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
int a1,a2,a3,a4,a5,a6;
while(cin>>a1>>a2>>a3>>a4>>a5>>a6)
{
int w = a1 + a2 + a3;
int ans = w*w - a1*a1 - a3*a3 - a5*a5;
cout<<ans<<endl;
}
return 0;
}