本文主要是介绍20180523 -周中训练1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
A.Odd Palindrome
题意:
一组字符串,倘若每个回文串均是偶数,则输出“Or not.",否则输出“Odd.‘’
思路:
暴力枚举即可。
代码:
#include <bits/stdc++.h>
using namespace std;
char s[105];
int main()
{bool flag;cin>>s;int len =strlen(s);for(int i=1;i<=len-1;i++){for(int j=0;j<=i;j++){flag=1;for(int k=0;k<=(i-j)/2;k++){if(s[i-k]!=s[j+k]){flag=0;break;}}if(flag==1){int leng = i-j+1;if(leng%2==0){cout<<"Or not."<<endl;return 0;}}}}cout<<"Odd."<<endl;return 0;
}
B.Latin Squares
题意:
有一个n*n的方阵,其中A-Z代表10到35,如果这个方阵中的每一行每一列元素均不相同,则称为Latin Squares,若不是,则输出“No”,若是,然后看第一行第一列是否是递增的序列,若是则输出“Reduced”否则输出“Not Reduced”。
思路:
将字符全部转换为数字,暴力枚举即可。
代码:
#include <bits/stdc++.h>
using namespace std;
char s[41][41];
int num[41][41];
int vis[50];
int n;
int main()
{while(cin>>n) //注意是多组输入{int flag=0;memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>s[i][j];if(s[i][j]<='9'&&s[i][j]>='0'){num[i][j]=s[i][j]-'0';}else{num[i][j]=s[i][j]-'A'+10;}}}for(int i=0;i<n;i++) ///hang{memset(vis,0,sizeof(vis));for(int j=0;j<n;j++) ///lie{if(vis[num[i][j]]==0){vis[num[i][j]]++;}else{flag=1;break;}}}if(flag==1){cout<<"No"<<endl;continue;}for(int i=0;i<n;i++) ///lie{memset(vis,0,sizeof(vis));for(int j=0;j<n;j++) ///hang{if(vis[num[j][i]]==0){vis[num[j][i]]++;}else{flag=1;break;}}}if(flag==1){cout<<"No"<<endl;continue;}for(int i=1;i<n;i++) ///diyihang{if(num[0][i-1]>=num[0][i]){flag=2;break;}}if(flag==2){cout<<"Not Reduced"<<endl;continue;}for(int i=1;i<n;i++) ///diyilie{if(num[i-1][0]>=num[i][0]){flag=2;break;}}if(flag==2){cout<<"Not Reduced"<<endl;continue;}if(flag==0)cout<<"Reduced"<<endl;}return 0;
}
C.
题意:
给定n,从1开始,让1与2、3、4、。。。n进行比较,此时输出的结果是1,然后在让2与3、4、5...n进行比较,此时输出2,注意每两个数字只能比较一次,问总共比较一半次数时,输出那个数字?
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;int main()
{ll n,sum,i,j,res;cin>>n;sum=(n-1)*n/2;//总共比较次数sum=(sum+1)/2; //总共比较次数的一半,注意这种情况for(i=n-1,j=1;j<n;j++,i--){res+=i;if(res>=sum) //大于一半时{cout<<j<<endl;break;}}return 0;
}
I.Forbidden Zero
题意:
给你一个不包含数字0得数,问你下一个不包含0的数字是多少?
思路:
0用1替换即可
代码:
#include <bits/stdc++.h>
using namespace std;
char s[10];
int b[10];int solve(int x)
{int cnt=0;while(x){b[cnt++]=x%10;x/=10;}for(int i=0;i<cnt;i++){if(b[i]==0){s[i]='1';}else s[i]=b[i]+'0';}return cnt;
}int main()
{int n;scanf("%d",&n);n++;int l=solve(n);for(int i=l-1;i>=0;i--){printf("%c",s[i]);}printf("\n");return 0;
}
- 什么
这篇关于20180523 -周中训练1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!