资深天翼
我猜你210分
但是我没考,我是rj【滑稽doge】
沈峻宇在2020-07-25 15:49:23追加了内容
200分
沈峻宇在2020-07-25 15:54:01追加了内容
190
沈峻宇在2020-07-25 16:10:31追加了内容
180?
中级光能
最后一题70分代码
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;
struct kx{
int l,b,f=0;
}a[100001];
int main(){
int n,m=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].l;
}
for(int i=1;i<=n;i++){
cin>>a[i].b;
}
int h=0;
if(a[1].b>=100&&a[1].b<200) h=20;
else if(a[1].b>=200) h=50;
m+=a[1].b;
for(int i=2;i<=n;i++){
if(i==2){
if(a[i].l-a[i-1].l<=7)
m+=a[i].b-h;
else m+=a[i].b;
h=0;
a[i].f=1;
}
else {
if(a[i-1].b>=100&&a[i-1].b<200){
if(a[i-1].f==0&&a[i].l-a[i-1].l<=7) m+=a[i].b-20;
else m+=a[i].b;
}
else if(a[i-1].b>=200){
if(a[i-1].f==0&&a[i].l-a[i-1].l<=7) m+=a[i].b-50;
else m+=a[i].b;
}
else if(a[i-1].b<100) m+=a[i].b;
}
}
cout<<m;
}
题目描述 Description
酷酷家附近有一个超市,为了促销,超市推出这样的活动:
购物满100元不到200元,送20元代金券,有效期7天(比如1月1日购物获得优惠券,则1月2日~8日都可以使用,过了8号就不能用了)
购物满200元及以上,送50元代金券,有效期10天。
代金券可以用于下次购物时减免实际的费用,不过如果用了代金券该次购物就不会获得新的代金券。
代金券如果超过了有效期就会失效。
酷酷是个精明的孩子,他在购物时如果手上正好有代金券可用,他会用最接近过期的那张优惠券。
如果同时有多张优惠券过期时间相同,则他会先使用面额大的那张优惠券。
下面给出酷酷的购物记录(哪一天购买多少元的商品),保证购物记录是按照时间先后的顺序给出的,请你输出酷酷最后的总花费。
输入描述 Input Description
第一行输入一个正整数n,表示共有n条购物记录。
第二行输入n个正整数t,按照购物的时间顺序输入,第i个数ti表示酷酷第i次购物是在哪一天。
第三行输入n个正整数m,第i个数mi表示酷酷第i次购物是要购买的物品的价格。
输出描述 Output Description
输出酷酷最后的总花费。
样例输入 Sample Input
5
1 3 4 7 10
200 100 50 100 100
样例输出 Sample Output
480
数据范围及提示 Data Size & Hint
对于10%的数据,n=2;
另有40%的数据,n<=100;
有100%的数据,n<=105
对于所有的数据,mi<=500, ti<=109
样例解释:
酷酷在第1天要够买200元的商品,花费200元,得到了50元优惠券;
酷酷在第3天要购买100元的商品,使用掉50元优惠券,花费了50元;
酷酷在第4天要购买50元的商品,花费50元,没有得到优惠券;
酷酷在第7天要购买100元的商品,花费100元,得到了20元优惠券;
酷酷在第10天要购买100元的商品,使用掉20元优惠券,花费了80元;
总共花费200+50+50+100+80=480元。
中级天翼
我心态崩了
140
555......
都是比较低级的错误
黄依成在2020-07-24 21:05:53追加了内容
A班
黄依成在2020-07-24 21:13:22追加了内容
第三题代码:
#include<iostream>
#include<cmath>
using namespace std;
void hw(int i){
int y=i,sum=0,cnt=0;
while(y!=0){
sum=sum*10+y%10;
y/=10;
}
if(sum==i) cout<<sum<<" ";
}
int zs(int x){
if(x==1) return 0;
if(x==2) return 1;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return 0;
}
}
return 1;
}
int main(){
int n,cnt=0;
cin>>n;
for(int i=1;i<=n;i++){
if(zs(i)){
hw(i);
cnt++;
}
}
cout<<endl<<cnt;
return 0;
}
怎么样,错误是不是很低级
黄依成在2020-07-24 21:15:01追加了内容
第四题:
#include<iostream>
using namespace std;
int n,i1,j1;
double x,y,minn=1000000,sum,a[1005];
int main(){
cin>>n>>x>>y;
sum=x/y;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
double cnt=double(i)/double(j);
if(cnt>sum){
if((cnt-sum)<minn){
minn=cnt-sum;
i1=i;j1=j;
}
}else{
if((sum-cnt)<minn){
minn=sum-cnt;
i1=i;j1=j;
}
}
}
}
cout<<i1<<" "<<j1;
return 0;
}
又是低级错误。。。
中级光能
这次考试真TM变态
第一题,100
第二题,40(有没有100的)
#include<iostream>
#include<algorithm>
using namespace std;
int a[1005],maxn=0,minn=0x3f3f3f;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
int x;
if(n%2!=0)
x=a[n/2+1];
else x=(a[n/2]+a[n/2+1])/2;
for(int i=1;i<=n;i++){
if(a[i]<minn) minn=a[i];
if(a[i]>maxn) maxn=a[i];
}
int ans=x+maxn+minn;
cout<<ans;
return 0;
}
第三题:0(改了改TLE 80)
#include<iostream>
using namespace std;
int cnt;
bool hw(int x){
int y=x,s=0;
while (y!=0)
{
s=s*10+y%10;
y/=10;
}
if (s==x) return 1;
else return 0;
}
bool zs(int y){
if(y==1) return false;
for(int i=2;i<=y-1;i++){
if(y%i==0) return false;
}
return true;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
if(hw(i) && zs(i)){
cout<<i<<' ';
cnt++;
}
}
cout<<endl<<cnt;
return 0;
}
第四题:0
第五题:100
第六题:0(改了改WA 10)
#include<iostream>
using namespace std;
int a[200005],b[200005],q1,q2,sum,rq,rq1;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
if(b[i]>=100&&b[i]<200){
if(q1==0){
q1++;
rq=a[i]+7;
sum+=b[i];
}
else {
if(a[i]<=rq){
sum+=b[i]-20;
q1--;
}
}
}
else if(b[i]>=200){
if(q2==0){
q2++;
rq1=a[i]+10;
sum+=b[i];
}
else {
if(a[i]<=rq1){
sum+=b[i]-50;
q2--;
}
}
}
}
cout<<sum;
return 0;
}
史上最差240
何冯成在2020-07-24 22:45:34追加了内容
@张天璨 你考多少
何冯成在2020-07-24 22:45:45追加了内容
@张天璨 你考多少
初级光能
300分
收电费
题目详情
题目描述 Description
酷酷一家到了夏天总是开空调,夏天一个月的电费能抵得上春秋季节2、3个月的电费。
下面给出电费收费标准:用电不超过180度,按照0.5953元/度收费;用电超过180度但不超过350度的部分,按照0.6453元/度收费;用电超过350度的部分,按照0.8953元/度收费。
酷酷一家用了m度电,请你帮酷酷计算他家需要交多少元电费(结果四舍五入保留三位小数)。
输入描述 Input Description
输入一个正整数m,表示酷酷一家用电的度数。
输出描述 Output Description
输出酷酷家要交的电费(四舍五入保留三位小数,单位:元)
样例输入 Sample Input
500
样例输出 Sample Output
351.150
数据范围及提示 Data Size & Hint
m<=1000
100分代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a;
double sum;
cin>>a;
if(a<=180){
sum=a*0.5953;
}
else if(a<=350){
sum=180*0.5953+(a-180)*0.6453;
}
else{
sum=180*0.5953+(350-180)*0.6453+(a-350)*0.8953;
}
printf("%.3f",(int)(sum*1000+0.5)/1000.0);
return 0;
}
最大值、最小值、中位数之和
题目详情
题目描述 Description
中位数的定义是一堆数从小到大排列之后,处于中间的数字。
比如1,5,2,4,3的中位数是3,因为从小到大排之后1,2,3,4,5,数字3位于最中间。如果共有偶数个数字,则中位数是中间两个数的平均值。
现在输入n个正整数,请你输出这n个数的最大值、最小值与中位数的和。(数据保证n是奇数)
输入描述 Input Description
输入两行,
第一行,输入一个正整数n;
第二行,输入n个正整数。
输出描述 Output Description
输出n个数的最大值、最小值与中位数的和。
样例输入 Sample Input
5 1 3 2 5 4
样例输出 Sample Output
9
数据范围及提示 Data Size & Hint
n<=1000
100分代码:
#include<iostream>
#include<algorithm>
using namespace std;
int a[1010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int sum=0;
sum=a[1]+a[n]+a[(n+1)/2];
cout<<sum;
return 0;
}
回文数与质数
题目详情
题目描述 Description
输入一个正整数n,请你求出1~n之间既是回文数也是质数的数,并输出这些数的个数。
回文数指一个数正着写,反着写是一样的,比如1,11,121这些数都是回文数。
输入描述 Input Description
输入一个正整数n(1<=n<=1000000)
输出描述 Output Description
第一行输出1~n之间(包括1和n)既是回文数也是质数的数;
第二行输出这些数的个数。
样例输入 Sample Input
10
样例输出 Sample Output
2 3 5 7 4
100分代码
#include<iostream>
#include<cmath>
using namespace std;
bool hw(int a){
int ans=0,a1=a;
while(a){
ans=ans*10+a%10;
a/=10;
}
if(ans==a1){
return true;
}
return false;
}
bool zs(int a){
if(a==1){
return false;
}
for(int i=2;i<=sqrt(a);i++){
if(a%i==0){
return false;
}
}
return true;
}
int main(){
int a,cnt=0;
cin>>a;
for(int i=1;i<=a;i++){
if(hw(i)&&zs(i)){
cout<<i<<' ';
cnt++;
}
}
cout<<endl<<cnt;
return 0;
}
最接近的分数
题目详情
题目描述 Description
给出n个不重复的正整数,以及一个指定的分数x/y。请你从n个数中找出2个数,满足这2个数组成的分数与x/y的数值最接近。
比如输入5个数:
1,2,3,4,5
指定的分数是6/7
在这5个数中找到两个数组成的分数与6/7最接近的是4/5
所以应当输出4和5。
输入描述 Input Description
输入两行,
第一行输入正整数n,x,y (n<=1000);
第二行输入n个正整数。
输出描述 Output Description
输出组成的分数最接近x/y的两个数。
样例输入 Sample Input
5 6 71 2 3 4 5
样例输出 Sample Output
4 5
数据范围及提示 Data Size & Hint
如果答案存在多组最接近最小值的数据,取下标字典序最小的:
比如:
在1 2 3 4 5这组数据中,存在2组答案
1:2和2:4都接近比值,此时选择1:2这组数据
0分代码:
#include<iostream>
#include<cmath>
using namespace std;
int n[1010];
int main(){
int a,b,c;
cin>>a>>b>>c;
for(int i=1;i<=a;i++){
cin>>n[i];
}
double sum=b*1.0/c,i1,j1,cha=double(n[1])/n[1];
for(int i=1;i<=a;i++){
for(int j=i;j<=a;j++){
double sum_1=min(n[i],n[j])*1.0/max(n[i],n[j]);
if(abs(sum_1-sum)<=cha){
cha=abs(sum_1-sum);
i1=i;
j1=j;
}
}
}
cout<<i1<<' '<<j1;
return 0;
}
其他的没做