目录
第一题
醉酒的狱卒
题目描述
某监狱有一个由n个牢房组成的大厅,每个牢房紧挨着。每个牢房里都有一个囚犯,每个牢房都是锁着的。 一天晚上,狱卒感到无聊,决定玩一个游戏。在第一轮,他喝了一杯威士忌,然后跑下大厅,打开每个牢房的锁。在第二轮比赛中,他喝了一杯威士忌,然后跑下大厅,锁上每隔一个的牢房的锁(牢房2、4、6....)。在第三轮比赛中,他喝了一杯威士忌,然后跑下大厅。他每隔三个牢房(第3、6、9号牢房)就去一次。如果牢房被锁上了,他就把它打开;如果牢房门打开了,他就锁上牢房。他重复n轮,喝最后一杯,然后昏倒。 一些囚犯(可能为零号)意识到他们的牢房被解锁且狱卒丧失了行动能力。他们就可以立即逃跑。现在根据牢房数量,确定有多少囚犯越狱。
输入描述:
第一行输入包含一个正整数t。表示有t行数据,下面每一行都包含一个介于5和100之间(含5和100)的整数,即轮数n
输出描述:
对于每一行,必须打印出监狱有n个牢房时越狱的囚犯人数
输入样例
2
5
100
输出样例
2
10
题解
#include<iostream>
#include<bits/stdc++.h>
#define N 110
using namespace std;
int main(){
int n,t,ans=0;
int str[N];
cin>>t;
while(t--){
ans=0;
memset(str,0,sizeof(str));
cin>>n;
for(int i=1;i<=n;i++){
if(i==1){
for(int j=0;j<=n;j++)
str[j]=1;
}
else{
for(int f=i;f<=n;f=f+i){
if(!str[f])
str[f]=1;
else
str[f]=0;
}
}
}
for(int i=1;i<=n;i++){
ans=ans+str[i];
}
cout<<ans<<endl;
}
return 0;
}
第二题
小玉家的电费
题目描述
夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。
输入描述:
输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。
输出描述:
输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。
输入样例
267
输出样例
121.5
题解
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
double ch;
cin>>n;
if(n<=150)
ch=n*0.4463;
if(n>150&&n<=400){
ch=150*0.4463;
ch=ch+(n-150)*0.4663;
}
if(n>400){
ch=150*0.4463+(400-150)*0.4663;
ch=ch+(n-400)*0.5663;
}
cout<<setiosflags(ios::fixed)<<setprecision(1)<<ch;
return 0;
}