判断素数 (10分)
本题是水题,不过有个点很坑,就是对1的判断,写函数的时候要特判一下1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
bool isprime(ull a)
{
ll i;
if(a==1)
return false;
if(a==2)
return true;
for(i = 2;i <= sqrt(a)+1;i++)
{
if(a%i==0)
return false;
}
return true;
}
int main()
{
int n;
cin>>n;
while(n--)
{
ull a;
cin>>a;
if(isprime(a))
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
```
7-2 寻找250 (10分)
思路:用EOF来进行输入,如果碰到第一个250就输出,并且标记一下,以后碰到250就不输出了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int cnt = 0;
int flag = 0;
while(~scanf("%d",&n))
{
if(n==250&&flag==0)
{
cout<<++cnt<<endl;
flag = 1;
}
else cnt++;
}
}
7-3 幸运彩票(15分)
思路:只要判断前三位数和后三位数的和相等就行
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
string t;
cin>>t;
if(t[0]+t[1]+t[2]==t[3]+t[4]+t[5])
cout<<"You are lucky!"<<endl;
else cout<<"Wish you good luck."<<endl;
}
}
7-4 出生年(15分)
思路:这道题关键是在判断这个数字有几个数字是一样的,然后从起始年份开始加一循环,碰到符合条件的就跳出输出。
#include<bits/stdc++.h>
using namespace std;
int check(int n)
{
int num[10]={0};
int a = n/1000;
int b = n/100%10;
int c = n/10%10;
int d = n%10;
num[a]++;
num[b]++;
num[c]++;
num[d]++;
if(num[a]==4||num[b]==4||num[c]==4||num[d]==4)
return 1;
if(num[a]==3||num[b]==3||num[c]==3||num[d]==3)
return 2;
if(num[a]==1&&num[b]==1&&num[c]==1&&num[d]==1)
return 4;
if(num[a]==1||num[b]==1||num[c]==1||num[d]==1)
return 3;
else
return 2;
}
int main()
{
int y,n,i;
cin>>y>>n;
for(i=0;;i++)
{
if(check(y+i)==n)
break;
}
printf("%d %04d",i,y+i);
}
7-5 敲笨钟(20分)
思路:逗点和句点是寻找的关键,find函数来判断有没有ong,如果有就往前数三个字符变成qiaobenzhong。
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main()
{
int n;
cin>>n;
while(n--)
{
int flag1 = 0,flag2 = 0;
int p1 = 0,p2 = 0;
string s[101];
int cnt = 0;
while(1)
{
cin>>s[cnt++];
if(s[cnt-1].find(".")!=-1)
break;
}
for(int i = 0;i < cnt;i++)
{
if(s[i].find(",")!=-1)
{
if(s[i].find("ong,")!=-1)
{
flag1 = 1;
p1 = i;
}
}
if(s[i].find(".")!=-1)
{
if(s[i].find("ong.")!=-1)
{
flag2 = 1;
p2 = i;
}
}
}
if(flag1*flag2==0)
cout<<"Skipped"<<endl;
else
{
s[p2] = "zhong.";
s[p2-1] = "ben";
s[p2-2] = "qiao";
for(int i = 0;i < cnt;i++)
{
cout<<s[i];
if(i!=cnt-1)
cout<<" ";
}
cout<<endl;
}
}
}
7-6 日期格式化(5分)
水题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int a,b,c;
char x;
cin>>a>>x>>b>>x>>c;
printf("%d-%02d-%02d\n",c,a,b);
}
7-7 A-B(20分)
思路:双重遍历,便历每一个a中的字符,看看b里面有没有相同的,如果有,那就不输出,如果没有就输出这个字符。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
int l = b.length();
int i = 0,j = 0;
while(a[i]!='\0')
{
for(j = 0;j < l;j++)
{
if(a[i]==b[j])
{
break;
}
}
if(j==l)
{
cout<<a[i];
}
i++;
}
cout<<endl;
}
7-8 计算指数(5分)
pow函数直接输出。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
getline(cin,a);
getline(cin,b);
int l = b.length();
int i = 0,j = 0;
while(a[i]!='\0')
{
for(j = 0;j < l;j++)
{
if(a[i]==b[j])
{
break;
}
}
if(j==l)
{
cout<<a[i];
}
i++;
}
cout<<endl;
}
7-9 抢红包(25分)
思路:模拟即可,用结构体来表示每个人的序号,钱数。然后排序输出。
#include<bits/stdc++.h>
using namespace std;
typedef struct
{
int no;
double money;
int cnt;
}person;
person p[10001];
bool cmp(person a,person b)
{
if(a.money==b.money)
{
return a.cnt>b.cnt;
}
else
return a.money>b.money;
}
int main()
{
int n;
cin>>n;
int t = n;
for(int i = 1;i <= n;i++)
{
p[i].no = i;
p[i].money = 0;
p[i].cnt = 0;
}
for(int j = 1;j<=n;j++)
{
int k;
cin>>k;
for(int i = 1;i <= k;i++)
{
int no;
double m;
cin>>no>>m;
p[j].money-=m;
p[no].money+=m;
p[no].cnt++;
}
}sort(p+1,p+1+t,cmp);
for(int i = 1;i <=t ;i++)
{
cout<<p[i].no<<" ";
printf("%.2lf\n",p[i].money/100);
}
}
7-10 互评成绩(25分)
模拟
#include<bits/stdc++.h>
using namespace std;
double a[10001];
bool cmp(double a,double b)
{
return a>b;
}
int main()
{
int n,k,m;
cin>>n>>k>>m;
int cnt = 1;
while(n--)
{
double t[k+1];
int i;double sum = 0;
for(i = 1;i <= k;i++)
{
cin>>t[i];
sum+=t[i];
}
sort(t+1,t+1+k);
sum=sum-t[1]-t[k];
a[cnt++] = sum/(k-2);
}
sort(a+1,a+1+cnt,cmp);
for(int i = 1;i<=m;i++)
{
printf("%.3lf",a[m-i+1]);
if(i!=m)
cout<<" ";
}
cout<<endl;
}