目录
4.比较奇偶数个数
#include <cstdio>
#include <cstring>
int main(){
int a;
while(scanf("%d",&a)!=EOF){
int b,num_odd=0,num=0;
for(int i=0;i<a;i++){
scanf("%d",&b);
if(b%2==0){
num+=1;
}else{
num_odd+=1;
}
}
char martix[10] = "YES";
char martix_2[10] = "NO";
if(num>num_odd){
printf("%s\n",martix_2);
}else{
printf("%s\n",martix);
}
}
return 0;
}
5.Shortest Distance (20)
第一次英文题目,看了好一会才看懂题目意思,难度倒是不大。
但是不知道为什么我的答案和大佬的一样,我的却显示答案错误........
#include <cstdio>
#include <cstring>
int main(){
int num;
scanf("%d",&num);
int martix[100000];
int all;
for(int i=0;i<num;i++){
scanf("%d",&martix[i]);
all+=martix[i];
}
int lines;
scanf("%d",&lines);
while(lines--){
int a,b;
scanf("%d %d",&a,&b);
if(a>b){
int temp=b;
b=a;
a=temp;
}
int dis1=0,dis2=0;
for(int i=a-1;i<b-1;i++){
dis1+=martix[i];
}
dis2 = all-dis1;
if(dis1<dis2){
printf("%d\n",dis1);
}else{
printf("%d\n",dis2);
}
}
return 0;
}
//#include <cstdio>
//int main()
//{
// int circle[100000],distance[100000];
// distance[1]=0;
// int n,m,sum=0;
// scanf("%d",&n);
// int b,e,low,high,dis1,dis2;
// for(int i=1;i<=n;i++)
// {
// scanf("%d",&circle[i]);
// sum+=circle[i];
// distance[i+1]=distance[i]+circle[i];
// }
// scanf("%d",&m);
// for(int j=0;j<m;j++)
// {
// scanf("%d%d",&b,&e);
// low=(b<e?b:e);
// high=(b>e?b:e);
// dis1=distance[high]-distance[low];
// dis2=sum-dis1;
// if(dis1<dis2)
// printf("%d\n",dis1);
// else
// printf("%d\n",dis2);
// }
// return 0;
//}
6.要用longlong型变量,lld进行输入输出
#include <cstdio>
#include <cstring>
int main(){
int num;
scanf("%d",&num);
int i=0;
while(num--){
i++;
long long a,b,c;
scanf("%lld %lld %lld",&a,&b,&c);
if(a+b>c){
printf("Case #%d: true\n",i);
}else{
printf("Case #%d: false\n",i);
}
}
return 0;
}
7.数字分类 (20)
这一题有更好的思路的,参考大佬的。
首先,不需要使用函数,因为每种问题在一次循环里只会执行一遍,执行函数反而有点画蛇添足,而且其实都是计算余数的问题,直接把余数取出来计算即可。
其次,我被sizeof害惨了,这个函数返回的好像不是我想象中的那种数组长度。
一度写到暴走
#include <cstdio>
#include <cstring>
#include <math.h>
void get_A1(int martix[],int num){
int a=0,b=0;
for(int i=0;i<num;i++){
b = martix[i];
}
int number=0;
for(int i=0;i<num;i++){
if(martix[i]%5==0&&martix[i]%2==0){
a+=martix[i];
number++;
}
}
if(number!=0){
printf("%d ",a);
}else{
printf("%c ",'N');
}
}
void get_A2(int martix[],int num_1){
int a=0,num=0;
for(int i=0;i<num_1;i++){
if(martix[i]%5==1){
num+=1;
a+=martix[i]*pow(-1,num+1);
}
}
if(num!=0){
printf("%d ",a);
}else{
printf("%c ",'N');
}
}
void get_A3(int martix[],int num){
int a=0,number=0;
for(int i=0;i<num;i++){
if(martix[i]%5==2){
a++;
}
}
if(a!=0){
printf("%d ",a);
}else{
printf("%c ",'N');
}
}
void get_A4(int martix[],int num_1){
float a=0,num=0;
for(int i=0;i<num_1;i++){
if(martix[i]%5==3){
a+=martix[i];
num++;
}
}
if(num!=0){
printf("%.1f ",a/num);
}else{
printf("%c ",'N');
}
}
void get_A5(int martix[],int num){
int max=0,number=0;
for(int i=0;i<num;i++){
if(martix[i]%5==4&&martix[i]>max){
max=martix[i];
number++;
}
}
if(number!=0){
printf("%d\n",max);
}else{
printf("%c\n",'N');
}
}
int main(){
int num;
while(scanf("%d",&num)!=EOF){
int martix[10001];
for(int i=0;i<num;i++){
scanf("%d",&martix[i]);
}
get_A1(martix,num);
get_A2(martix,num);
get_A3(martix,num);
get_A4(martix,num);
get_A5(martix,num);
}
return 0;
}
//#include <cstdio>
//#include <cmath>
//int main()
//{
// int n,number[1000];
// while(scanf("%d",&n)!=EOF)
// {
// int a1=0,a2=0,a3=0,a5=0;
// int b1=0,b2=0,b5=0;
// double a4=0;
// int m=0,k=0;
// for(int i=0;i<n;i++)
// {
// scanf("%d",&number[i]);
// int f=number[i]%5;
// if(f==0)
// {
// if(number[i]%2==0)
// {
// a1+=number[i];
// b1++;
// }
// }
// else if(f==1)
// {
// a2+=(number[i]*pow(-1,m++));
// b2++;
// }
// else if(f==2)
// a3++;
// else if(f==3)
// {
// a4+=number[i];
// k++;
// }
// else
// {
// if(number[i]>a5)
// a5=number[i];
// b5++;
// }
// }
// if(b1==0) printf("N ");
// else printf("%d ",a1);
// if(b2==0) printf("N ");
// else printf("%d ",a2);
// if(a3==0) printf("N ");
// else printf("%d ",a3);
// if(k==0) printf("N ");
// else printf("%.1f ",a4/k);
// if(b5==0) printf("N");
// else printf("%d",a5);
// printf("\n");
// }
// return 0;
//}
8.下方大佬的适合研究,我这个就比较直白。
#include <cstdio>
#include <cstring>
#include <math.h>
int main(){
char A[100],B[100];
int a,b;
while(scanf("%s %d %s %d",A,&a,B,&b)!= EOF){
// while(scanf("%s %d %s %d",A,&a,B,&b)!= EOF){
int sum1=0,sum2=0,num1=0,num2=0;
for(int i=0;i<strlen(A);i++){
if(A[i]-'0'==a){
num1++;
sum1+=a*pow(10,num1-1);
}
}
for(int i=0;i<strlen(B);i++){
if(B[i]-'0'==b){
num2++;
sum2+=b*pow(10,num2-1);
}
}
printf("%d\n",sum1+sum2);
}
return 0;
}
//#include <cstdio>
//#include <cstring>
//void Dispose(char a[],char b)
//{
// int num=0;
// for(int i=0;a[i]!='\0';i++)
// if(a[i]==b)
// num++;
// for(int i=0;i<num;i++)
// a[i]=b;
// a[num]='\0';
//}
//int main()
//{
// char A[11],B[11];
// char a,b;
// while(scanf("%s %c %s %c",A,&a,B,&b)!=EOF)
// {
// int aa=0,bb=0;
// Dispose(A,a);
// sscanf(A,"%d",&aa);
// Dispose(B,b);
// sscanf(B,"%d",&bb);
// printf("%d\n",aa+bb);
// }
// return 0;
//}
9.锤子剪刀布 (20)
中间有一个bug卡了我好久,%c是字符,可以吸收换行符和空格,所以在scanf之前要用getchar吸收!
#include <cstdio>
#include <cstring>
#include <math.h>
int main(){
int num;
while(scanf("%d",&num)!= EOF){
int a=0,b=0,c=0;
int c1=0,j1=0,b1=0;
int c2=0,j2=0,b2=0;
char x,y;
getchar();
for(int i=0;i<num;i++){
scanf("%c %c",&x,&y);
getchar();
if(x==y){
c+=1;
}else{
if(x=='C'&&y=='J'){
a+=1;
c1++;
j2++;
}else if(x=='J'&&y=='B'){
a+=1;
j1++;
b2++;
}else if(x=='B'&&y=='C'){
a+=1;
b1++;
c2++;
}
}
}
int martix[100] = {c1,j1,b1};
int martix_2[100] = {c2,j2,b2};
char index[100]={'C','J','B'};
int max=0,max_2=0;
for(int i=1;i<3;i++){
if (martix[max]<martix[i]){
max = i;
}
else if (martix[max]==martix[i]){
if (index[max] > index[i]){
max = i;
}
}
}
for(int i=1;i<3;i++){
if (martix_2[max_2]<martix_2[i]){
max_2 = i;
}
else if (martix_2[max]==martix_2[i]){
if (index[max_2] > index[i]){
max_2 = i;
}
}
}
b = num-a-c;
printf("%d %d %d\n",a,c,b);
printf("%d %d %d\n",b,c,a);
printf("%c %c\n",index[max],index[max_2]);
// printf("%c\n",index[max_2]);
}
return 0;
}
//#include <cstdio>
//#include <cstring>
//struct person
//{
// int win,lose,tie,t[3];
// person()
// {
// win=0;lose=0;tie=0;
// for(int i=0;i<3;++i)
// t[i]=0;
// }
//};
//int judge(person a)
//{
// int max=-1,index=0;
// for(int i=0;i<3;++i)
// if(a.t[i]>max)
// {
// index=i;
// max=a.t[i];
// }
// return index;
//}
//int main()
//{
// int n;
// char a,b;
// char res[3]={'B','C','J'};
// while(~scanf("%d",&n))
// {
// getchar();
// person plus,minus;
// for(int i=0;i<n;++i)
// {
// scanf("%c %c",&a,&b);
// getchar();
// if(a==b)
// {
// ++plus.tie;
// ++minus.tie;
// }
// else if(a=='B'&&b=='C')
// {
// ++plus.win;
// ++minus.lose;
// ++plus.t[0];
// }
// else if(a=='C'&&b=='J')
// {
// ++plus.win;
// ++minus.lose;
// ++plus.t[1];
// }
// else if(a=='J'&&b=='B')
// {
// ++plus.win;
// ++minus.lose;
// ++plus.t[2];
// }
// else if(b=='B'&&a=='C')
// {
// ++minus.win;
// ++plus.lose;
// ++minus.t[0];
// }
// else if(b=='C'&&a=='J')
// {
// ++minus.win;
// ++plus.lose;
// ++minus.t[1];
// }
// else if(b=='J'&&a=='B')
// {
// ++minus.win;
// ++plus.lose;
// ++minus.t[2];
// }
// }
// printf("%d %d %d\n",plus.win,plus.tie,plus.lose);
// printf("%d %d %d\n",minus.win,minus.tie,minus.lose);
// printf("%c %c\n",res[judge(plus)],res[judge(minus)]);
// }
// return 0;
//}