科大讯飞笔试四道题(100%,0 , 100%,85%)
第一题,硬币找零,最少多少张纸币 100%
有面值1,5,10,50,100,分别对应变量:a、b、c、d、e
若有k元钱,最少多少张纸币能找零,若不能则输出-1
贪心:从大到小遍历一遍,注意给定币值数量判断
#include<bits/stdc++.h> using namespace std; int main() { int a,b,c,d,e; int k; cin >> a >> b >> c >> d >> e; cin >> k; int res = 0; if(k >= 100 && e) { int s = k/100; if(s <= e) { res += s; k = k%100; } else { res += e; k = k - (e * 100); } } if(k >= 50 && d) { int s = k/50; if(s <= d) { res += s; k = k%50; } else { res += d; k = k - (d * 50); } } if(k >= 10 && c) { int s = k/10; if(s <= c) { res += s; k = k%10; } else { res += c; k = k - (c * 10); } } if(k >= 5 && b) { int s = k/5; if(s <= b) { res += s; k = k%5; } else { res += b; k = k - (b * 5); } } if(k <= a) cout << res+k; else cout << -1; return 0; }
第二题:排序题 未做
第三题:矩形是否相交 100%
给定坐标:(0,0),(2,3),(1,2),(5,4)
判断前两个点对角线构成的矩形是否与后两个点构成的矩形相交
相交则输出1,否则输出0
直接输出:1 过了65%
直接模拟判断出为0的情况:
第二个矩形两个点的横坐标同时大于第一个矩形第二个点的横坐标为不相交
第二个矩形两个点的横坐标同时小于第一个矩形第一个点的横坐标为不相交
第二个矩形两个点的纵坐标同时大于第一个矩形第二个点的纵坐标为不相交
第二个矩形两个点的纵坐标同时小于第一个矩形第一个点的纵坐标为不相交
否则输出1即可
#include<bits/stdc++.h> using namespace std; int main() { //矩形1 int x1,y1,x2,y2; //矩形2 int a1,b1,a2,b2; cin >> x1 >> y1 >> x2 >> y2; cin >> a1 >> b1 >> a2 >> b2; if(b1 > y2 && b2 > y2) cout << 0; else if(b1 < y1 && b2 < y1) cout << 0; else if(a1 > x2 && a2 > x2) cout << 0; else if(a1 < x1 && a2 < x1) cout << 0; else cout << 1; return 0; }
第四题:字符串中提取整数 85%
例如:+1a2
输出:12
例如:-1a2
输出:-12
简单模拟,没过,可能有特殊数据未考虑到