1001 - 1100
题过于简单,请自行探索。
绝大多数代码都可以AC
,编写过程中可能有纰漏。
题号会有缺失或颠倒,但OJ上确实如此。
OJ地址:http://47.96.116.66/index.php
注意账号需要向教练申请
本文代码可以随意使用,无需我授权。
列表内的题目已经全部更新完毕(2021.10.11)
1101 问题 L: 零基础学C/C++101——最大数与数列最后一个数交换
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[110]={},max0=-1,post0=-1;
for(int i=1;i<=n;i++){
cin>>a[i];
if(max0<a[i]){
max0=a[i];
post0=i;
}
}
swap(a[n],a[post0]);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int flag;
string intToA(int n,int radix){
flag=-1;
if(n<0){
flag=1;
n=-n;
}
string ans="";
do{
int t=n%radix;
if(t>=0&&t<=9) ans+=t+'0';
else ans+=t-10+'A';
n/=radix;
}while(n!=0);
reverse(ans.begin(),ans.end());
return ans;
}
int main(){
int n,m;
while(cin>>n>>m){
string a=intToA(n,m);
if(flag==1) cout<<'-';
cout<<a<<endl;
}
return 0;
}
1108 问题 N: 零基础学C/C++108——程序设计竞赛
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[100]={};
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=n-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n and n!=0){
int a[100]={};
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
if(abs(a[i])<abs(a[j])) swap(a[i],a[j]);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
1110 问题 A: 零基础学C/C++110——N个数从小到大排序
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n and n!=0){
int a[100]={};
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=n-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
1111 问题 B: 零基础学C/C++111——N个数从大到小排序
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n and n!=0){
int a[100]={};
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n and n!=0){
int a[100]={},x,j=0;
for(int i=0;i<n;i++){
cin>>x;
if(x%2==0)a[j++]=x;
}
sort(a,a+j);
for(int i=j-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
int n;
while(cin>>n){
int a[100]={},p;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>p;
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
if(a[i]==p){
cout<<i+1;
break;
}
cout<<endl;
}
return 0;
}
1114 问题 E: 零基础学C/C++114——直接插入排序
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
for(int q=0;q<t;q++){
int cnt=0,n,a[2010]={};
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int k;
for(int i=1;i<n;i++){
for(int j=i-1;j>=0;j--){
k=0;
if(a[i]>=a[j]){
k=j+1;
cnt++;
break;
}
else cnt++;
}
int b=a[i];
for(int j=i;j>k;j--)
a[j]=a[j-1];
a[k]=b;
}
cout<<cnt<<endl;
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[1000]={},sum=0,max0=-1;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
max0=max(max0,a[i]);
}
sort(a,a+n);
cout<<sum<<" "<<max0<<" ";
for(int i=n-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int a[15][15]={};
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++)
cout<<a[j][i]<<" ";
cout<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int k=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<++k<<" ";
cout<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int p=0,q=0;
for(int i=1;i<=n;i++){
if(i%2==1){
for(int j=1;j<=m;j++)
printf("%2d ",++p);
}
else{
p+=m+1;
for(int j=1;j<=m;j++)
printf("%2d ",--p);
p+=m-1;
}
cout<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
while(cin>>m>>n){
int a[15][15]={},sum;
for(int i=1;i<=m;i++){
sum=0;
for(int j=1;j<=n;j++){
cin>>a[i][j];
sum+=a[i][j];
}
a[i][n+1]=sum;
}
for(int j=1;j<=n+1;j++)
cout<<a[m][j]<<" ";
cout<<endl;
for(int i=2;i<=m-1;i++){
for(int j=1;j<=n+1;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
for(int j=1;j<=n+1;j++)
cout<<a[1][j]<<" ";
cout<<endl;
}
return 0;
}
1120 问题 E: 零基础学C/C++120——矩阵对角线求和
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[15][15]={},sum1=0,sum2=0,p=n+1;
for(int i=1;i<=n;i++){
p--;
for(int j=1;j<=n;j++){
cin>>a[i][j];//其实用不到数组2333
if(i==j)sum1+=a[i][j];
if(j==p)sum2+=a[i][j];
}
}
cout<<sum1<<" "<<sum2;
cout<<endl;
}
return 0;
}
1121 问题 F: 零基础学C/C++121——判断是否上三角矩阵
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[15][15]={},p,f=-1;
for(int i=1;i<=n;i++){
p=i-1;
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(j<=p and a[i][j]!=0) f=1;
}
}
if(f==1) cout<<"NO";
else cout<<"YES";
cout<<endl;
}
return 0;
}
未完待续 2021.10.3
#include<bits/stdc++.h>
using namespace std;
#define LL unsigned long long
int main(){
int n;
while(cin>>n){
if(n==1){
cout<<"1\n\n";
continue;
}
LL a[100][100]={};
for(int i=1;i<=n;i++){
a[i][1]=1;
a[i][i]=1;
}
cout<<"1\n";
cout<<"1 1\n";
for(int i=3;i<=n;i++){
cout<<"1 ";
for(int j=2;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
cout<<a[i][j]<<" ";
}
cout<<"1\n";
}
cout<<endl;
}
return 0;
}
/* 此题不能用通项公式,阶乘暴力算,会溢出! */
/*
#include<bits/stdc++.h>
using namespace std;
#define LL unsigned long long
LL JC(int n){
LL jc=1;
for(LL i=1;i<=n;i++)
jc*=i;
return jc;
}
LL C(int n,int m){
return JC(n-1)/(JC(m-1)*JC(n-m));
}
int main(){
int n;
while(cin>>n){
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
if(j==i){
printf("%llu",C(i,j));
continue;
}
printf("%llu ",C(i,j));
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
*/
AC 100%
代码(借用了网上的思路)
#include <iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int i,j,a[6][6];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
int k=0,y=0,flag=-1,p=0;
if(n==1) cout<<"0 0\n";
else{
for(i=0;i<n;i++){
y=i;
for(p=0;p<n;p++)
if(a[i][k]<=a[i][p]) k=p;
for(j=0;j<n;j++)
if(a[y][k]>a[j][k]){
y=j;
break;
}
if(i==y){
flag=0;
break;
}
}
if(flag==0) printf("%d %d\n",i,k);
else cout<<"NO\n";
}
}
return 0;
}
AC 80%
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int a[15][15]={};
int x[15]={},y[15]={},p1[15]={},p2[15]={},q1[15]={},q2[15]={};
memset(x,-1,sizeof(x));
memset(y,100,sizeof(y));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
if(x[i]<a[i][j]){
x[i]=a[i][j];
p1[i]=i;
p2[i]=j;
}
}
}
if(n==1){
cout<<"0 0"<<endl;
continue;
}
for(int j=0;j<n;j++){
for(int i=0;i<n;i++){
if(y[j]>a[i][j]){
y[j]=a[i][j];
q1[j]=i;
q2[j]=j;
}
}
}
int f=-1;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(x[i]==y[j] and p1[i]==q1[j] and p2[i]==q2[j]){
cout<<p1[i]<<" "<<p2[j];
f=1;
}
}
}
if(f==-1)cout<<"NO";
cout<<endl;
}
return 0;
}
1124 问题 I: 零基础学C/C++124——海选女主角
这道题 题目真***恶心
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
int p,q;
LL max0=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
LL tmp;
cin>>tmp;
if( abs(max0) < abs(tmp) ){
max0=tmp;
p=i;q=j;
}
}
}
printf("%d %d %lld\n",p,q,max0);
}
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a[15][15],b[15][15],c[15][15]={};
int m,n,i,j,k;
while(cin>>m>>n){
memset(c,0,sizeof(c));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>b[i][j];
for(i=0;i<m;i++)
for(j=0;j<m;j++)
for(k=0;k<n;k++)
c[i][j]+=a[i][k]*b[k][j];
for(i=0;i<m;i++){
for(j=0;j<m-1;j++)
cout<<c[i][j]<<" ";
cout<<c[i][m-1]<<endl;;
}
}
return 0;
}
未完待续 21.10.4
这道题折磨了我半天
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int n,m,i,j;
int a[20][20],b[20][20];
void init0(){
for(i=0;i<20;i++)
for(j=0;j<20;j++){
a[i][j]=0;b[i][j]=-1;
}
for(i=0;i<=n+1;i++){
b[i][0]=1;
b[i][m+1]=1;
}
for(j=0;j<=m+1;j++){
b[0][j]=1;
b[n+1][j]=1;
}
}
void outa(){
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
printf("%2d ",a[i][j]);
cout<<endl;
}
}
int main(){
int dx[4]={1,0,-1,0},ex;
int dy[4]={0,1,0,-1},ey;
while(cin>>n>>m){
init0();
int x=1,y=1,k=0;
ex=0;ey=0;
while(k<m*n){
if(b[y][x]==1){
y-=dy[ey];
x-=dx[ex];
ey++;ex++;
ey%=4;ex%=4;
y+=dy[ey];
x+=dx[ex];
}
if(b[y][x]==-1){
k++;
a[y][x]=k;
b[y][x]=1;
y+=dy[ey];
x+=dx[ex];
}
}
outa();
}
return 0;
}
1127 问题 B: 零基础学C/C++127——矩阵下三角元素之和
#include<bits/stdc++.h>
using namespace std;
long long n,i,j,sum,x;
int main(){
while(cin>>n){
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cin>>x;
if(j<=i) sum+=x;
}
cout<<sum<<endl;
}
return 0;
}
又臭又长的代码
#include<iostream>
#include<cstring>
using namespace std;
int n,a[100][100],b[100][100],c[100][100];
int r1,c1,r2,c2,i,j,p1,q1,k;
char s[5];
void output(int x,int y){
for(int i=0;i<x;i++){
for(int j=0;j<y;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
void init(){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>r1>>c1;
for(i=0;i<r1;i++) for(j=0;j<c1;j++) cin>>a[i][j];
cin>>r2>>c2;
for(i=0;i<r2;i++) for(j=0;j<c2;j++) cin>>b[i][j];
}
int main(){
cin>>n;
while(n--){
init();
while(cin>>s){
if(s[0]=='e') break;
if(s[0]=='-'){
memset(c,0,sizeof(c));
for(i=0;i<r1;i++) for(j=0;j<c1;j++) c[i][j]=a[i][j]-b[i][j];
output(r1,c1);
}
if(s[0]=='+'){
memset(c,0,sizeof(c));
for(i=0;i<r1;i++) for(j=0;j<c1;j++) c[i][j]=a[i][j]+b[i][j];
output(r1,c1);
}
if(s[0]=='*'){
memset(c,0,sizeof(c));
for(i=0;i<r1;i++) for(j=0;j<c2;j++) for(k=0;k<c1;k++) c[i][j]+=a[i][k]*b[k][j];
output(r1,c2);
}
if(s[0]=='='){
for(i=0;i<r1;i++) for(j=0;j<c1;j++) a[i][j]=b[i][j];
}
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,k,i,j,x,y;
int kmax;
void KMAX(){
kmax=0;
for(i=1;i<=n;i++)
kmax+=i;
}
int main(){
while(cin>>n){
KMAX();
k=0;
x=1;y=1;
int a[110][110];
while(k<kmax){
k++;
a[x][y]=k;
x--;y++;
if(x==0){
x=y;
y=1;
}
}
int m=n;
for(i=1;i<=n;i++){
for(j=1;j<m;j++)
cout<<a[i][j]<<" ";
m--;
cout<<a[i][j]<<endl;
}
}
return 0;
}
1130 问题 E: 零基础学C/C++130——二维数组右上角乘以x
#include<bits/stdc++.h>
using namespace std;
long long n,x,i,j;
long long a[15][15];
int main(){
while(cin>>n>>x){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>a[i][j];
if(j>=i) a[i][j]*=x;
}
}
for(i=1;i<=n;i++){
for(j=1;j<n;j++)
cout<<a[i][j]<<" ";
cout<<a[i][j]<<endl;
}
}
return 0;
}
1131 问题 F: 零基础学C/C++131——二维数组左下角置0
#include<bits/stdc++.h>
using namespace std;
int n,i,j;
long long a[15][15];
int main(){
while(cin>>n){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>a[i][j];
if(j<=i) a[i][j]=0;
}
}
for(i=1;i<=n;i++){
for(j=1;j<n;j++)
cout<<a[i][j]<<" ";
cout<<a[i][j]<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long n,i,j;
double sum,k;
long long a[15][15];
int main(){
while(cin>>n){
sum=0;
k=0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>a[i][j];
if(i==1 or i==n or j==1 or j==n){
sum+=a[i][j];
k++;
}
}
}
printf("%.2f\n",sum/k);
}
return 0;
}
1133 问题 H: 零基础学C/C++133——矩阵A+A’
#include<bits/stdc++.h>
using namespace std;
long long n,i,j;
long long a[15][15],b[15][15];
int main(){
while(cin>>n){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=a[j][i];
for(i=1;i<=n;i++){
for(j=1;j<n;j++)
cout<<a[i][j]+b[i][j]<<" ";
cout<<a[i][j]+b[i][j]<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long n,i,j,flag;
long long a[15][15],b[15][15];
int main(){
while(cin>>n){
flag=-1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=a[j][i];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]!=b[i][j]) flag=1;
if(flag==1) printf("No\n");
else printf("Yes\n");
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,x;
double d;
int a[1010][1010];
int main(){
while(cin>>n>>m>>d){
x=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cin>>a[i][j];
if(a[i][j]==0)x++;
}
double rate=(double) ( (double) (n*m-x)/(double) (n*m) );
if(rate<d){
cout<<n<<" "<<m<<endl;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i][j]!=0) printf("%d %d %d\n",i,j,a[i][j]);
}
else{
cout<<n<<" "<<m<<endl;
for(i=0;i<n;i++){
for(j=0;j<m-1;j++)
cout<<a[i][j]<<" ";
cout<<a[i][j]<<endl;
}
}
}
return 0;
}
未完待续 21.10.5
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[110];
while(cin.getline(a,110)){
for(int i=strlen(a)-1;i>=0;i--)
cout<<a[i];
cout<<endl;
}
}
1137 问题 B: 零基础学C/C++137——统计字母数字等个数
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s[110];
while(cin.getline(s,110)){
int num=0,let=0,etc=0,spa=0;
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]>='0' and s[i]<='9') num++;
else if(s[i]>='a' and s[i]<='z') let++;
else if(s[i]>='A' and s[i]<='Z') let++;
else if(s[i]==' ') spa++;
else etc++;
}
cout<<let<<" "<<num<<" "<<spa<<" "<<etc<<endl;
}
return 0;
}
1138 问题 C: 零基础学C/C++138——查找最大元素
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s[110],max0;
while(cin.getline(s,110)){
max0='A';
for(int i=0;i<strlen(s);i++)
max0=max(max0,s[i]);
for(int i=0;i<strlen(s);i++){
cout<<s[i];
if(max0==s[i])cout<<"(max)";
}
cout<<endl;
}
return 0;
}
1139 问题 D: 零基础学C/C++139——Yes,I can!
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[10];
cin>>a;
printf("I am %s,yes,I can!",a);
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s[110];
int n;
while(cin>>n){
getchar();
while(n--){
gets(s);
int a=0,e=0,i0=0,o=0,u=0;
for(int i=0;i<strlen(s);i++){
if(s[i]=='a') a++;
if(s[i]=='e') e++;
if(s[i]=='i') i0++;
if(s[i]=='o') o++;
if(s[i]=='u') u++;
}
printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",a,e,i0,o,u);
if(n>0) printf("\n");
}
}
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[100];
while(gets(a)){
bool flag=true;
for(int i=0;i<=strlen(a);i++)
if(a[i]!=a[strlen(a)-i-1]) flag=false;
if(flag) cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
1142 问题 G: 零基础学C/C++142——单数变复数
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[100];
int n;
cin>>n;
getchar();
while(n--){
// cin.getline(a,100);
// gets(a);
//getline和gets过不了,cin和scanf能过
// cin>>a;
scanf("%s",a);
int len=strlen(a);
if(a[len-1]=='y')
cout<<a<<"es";
else if(a[len-1]=='s' or a[len-1]=='x')
cout<<a<<"es";
else if(a[len-2]=='c' and a[len-1]=='h')
cout<<a<<"es";
else if(a[len-2]=='s' and a[len-1]=='h')
cout<<a<<"es";
else if(a[len-1]=='o')
cout<<a<<"es";
else
cout<<a<<"s";
if(n!=0)cout<<endl;
}
return 0;
}
1143 问题 H: 零基础学C/C++143——绝对公正的裁判
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int n;
string a;
cin>>n;
while(n--){
cin>>a;
if(a=="AC") cout<<"Accepted\n";
if(a=="PE") cout<<"Presentation Error\n";
if(a=="WA") cout<<"Wrong Answer\n";
if(a=="RE") cout<<"Runtime Error\n";
if(a=="TLE") cout<<"Time Limit Exceeded\n";
if(a=="MLE") cout<<"Memory Limit Exceeded\n";
if(a=="OLE") cout<<"Output Limit Exceeded\n";
if(a=="CE") cout<<"Compilation Error\n";
}
return 0;
}
1144 问题 I: 零基础学C/C++144——首字母变大写
#include<bits/stdc++.h>
using namespace std;
int main(){
char s[120];
while (gets(s)){
if(s[0]>='a' and s[0]<='z') cout<<char(s[0]-32);
else cout<<s[0];
for(int i=1;i<strlen(s);i++){
if (s[i-1]==' ' && s[i]>='a' && s[i]<='z') cout<<char(s[i]-32);
else cout<<s[i];
}
cout<<endl;
}
return 0;
}
1145 问题 J: 零基础学C/C++145——进制转换II
注意此题的输入数据最大有1000个二进制位,即2^1000
#include<bits/stdc++.h>
using namespace std;
char a[2000],ans[2000];
void b2h(int l,int r,int cnt){
int base=0;
for(int i=1;i<=3-(r-l);i++)
base=base<<1;
for(int i=l;i<=r;i++){
int b=a[i]-'0';
base=(base<<1)+b;
}
char s[10];
sprintf(s,"%X",base);
ans[cnt]=s[0];
}
int main(){
int n;
cin>>n;
while(n--){
memset(ans,0,sizeof(ans));
cin>>a;
int len=strlen(a),cnt=0;
while(len>=4){
len-=4;
b2h(len,len+3,cnt++);
}
if(len>0) b2h(0,len-1,cnt);
for(int i=strlen(ans)-1;i>=0;i--)
cout<<ans[i];
cout<<endl;
}
}
未完待续 21.10.7
1146 问题 A: 零基础学C/C++146——C语言合法标识符
#include<bits/stdc++.h>
using namespace std;
char a[100];
int main(){
int n;
cin>>n;
getchar();
while(n--){
int flag=1;
gets(a);
if( (a[0]>='a' and a[0]<='z') or (a[0]>='A' and a[0]<='Z') or (a[0]=='_') ){
;
}
else flag=-1;
for(int i=1;i<strlen(a);i++){
if( (a[i]>='a' and a[i]<='z') or (a[i]>='A' and a[i]<='Z') or (a[i]=='_') or (a[i]>='0' and a[i]<='9') ){
;
}
else flag=-1;
}
if(flag==1)cout<<"yes\n";
else cout<<"no\n";
}
return 0;
}
1147 问题 B: 零基础学C/C++147——统计每个字母个数
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[105],b[26];
while(gets(a)){
int s[100]={0};
for(int i=0;i<26;i++){
int c=0;
b[i]=i+97;
for(int j=0;j<strlen(a);j++)
if(b[i]==a[j] or b[i]==a[j]+32) s[i]=++c;
if(s[i]>=1) printf("%c: %d\n",b[i],s[i]);
}
cout<<endl;
}
return 0;
}
1148 问题 C: 零基础学C/C++148——字符串整理
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[1000];
while(gets(a)){
for(int i=0;i<strlen(a);i++)
if( (a[i]>='a' and a[i]<='z') or (a[i]>='A' and a[i]<='Z') ) cout<<a[i];
cout<<endl;
}
return 0;
}
1149 问题 D: 零基础学C/C++149——重组字符串
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100];
while(gets(a)){
sort(a,a+strlen(a));
cout<<a<<endl;
}
return 0;
}
1150 问题 E: 零基础学C/C++150——统计元音字母数
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char s[110];
while(gets(s)){
int a=0,e=0,i0=0,o=0,u=0;
for(int i=0;i<strlen(s);i++){
if(s[i]=='a' or s[i]=='A') a++;
if(s[i]=='e' or s[i]=='E') e++;
if(s[i]=='i' or s[i]=='I') i0++;
if(s[i]=='o' or s[i]=='O') o++;
if(s[i]=='u' or s[i]=='U') u++;
}
printf("%d\n%d\n%d\n%d\n%d\n",a,e,i0,o,u);
}
return 0;
}
1151 问题 F: 零基础学C/C++151——检索大写字母
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(gets(a)){
int b[100]={};
for(int i=0;i<strlen(a);i++){
if(a[i]>='A' and a[i]<='Z' and b[(int)(a[i]-'A')]==0){
cout<<a[i]<<" ";
b[(int)(a[i]-'A')]++;
}
}
cout<<endl;
}
return 0;
}
1152 问题 G: 零基础学C/C++152——统计单词个数
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(gets(a)){
int l=0;
for(int i=0;i<strlen(a);i++)
if(a[i]!=' ' and a[i+1]==' ') l++;
cout<<++l<<endl;
}
}
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(gets(a)){
for(int i=0;i<strlen(a);i++){
if( (a[i]>='A' and a[i]<='U') or (a[i]>='a' and a[i]<='u') )
a[i]=a[i]-'A'+'F';
else if( (a[i]>='V' and a[i]<='Z') or (a[i]>='v' and a[i]<='z') )
a[i]=a[i]-'V'+'A';
}
cout<<a<<endl;
}
return 0;
}
1154 问题 I: 零基础学C/C++154——加密程序2
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(gets(a)){
for(int i=0;i<strlen(a);i++)
if(a[i]>='A' and a[i]<='Z')
a[i]=26-(a[i]-'A'+1)+1+'A'-1;
cout<<a<<endl;
}
return 0;
}
*1155 问题 J: 零基础学C/C++155——句子比较大小
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
char nn[100];
while(gets(nn)){
//stgg:
//“83%的数据是win写的,17%的数据是linux写的”
//“他们表示回车的字符不一样,win有两个,linux一个 ”
//“所以不能用cin+getchar,getchar只能吃掉一个字符”
//采用读入字符串转数字的方法atoi()
int n=atoi(nn);
string a[100];
for(int i=0;i<n;i++)
getline(cin,a[i]);
sort(a,a+n);
for(int i=0;i<n;i++)
cout<<a[i]<<endl;
cout<<endl;
}
return 0;
}
/*
bool cmp(const string &lhs,const string &rhs){
return lhs < rhs;
}
*/
//std::sort(a,a+n,[](const std::string &lhs,const std::string &rhs){ return lhs < rhs; });
1156 问题 K: 零基础学C/C++156——删除前导*
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(cin>>a){
int flag=-1;
for(int i=0;i<strlen(a);i++){
if(a[i]=='*' and flag==-1){
;
}
else{
cout<<a[i];
flag=1;
}
}
cout<<endl;
}
return 0;
}
1157 问题 L: 零基础学C/C++157——保留尾部*
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(cin>>a){
int cnt=0,flag=-1;
for(int i=strlen(a)-1;i>=0;i--){
if(a[i]=='*' and flag==-1) cnt++;
else flag=1;
}
for(int i=0;i<strlen(a);i++){
if(a[i]=='*') {;}
else cout<<a[i];
}
for(int i=0;i<cnt;i++)
cout<<'*';
cout<<endl;
}
return 0;
}
1158 问题 M: 零基础学C/C++158——删除中间的*
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1000];
while(cin>>a){
int cnt1=0,flag1=-1;
int cnt2=0,flag2=-1;
for(int i=strlen(a)-1;i>=0;i--){
if(a[i]=='*' and flag1==-1) cnt1++;
else flag1=1;
}
for(int i=0;i<strlen(a);i++){
if(a[i]=='*' and flag2==-1) cnt2++;
else flag2=1;
}
while(cnt2--)
cout<<'*';
for(int i=0;i<strlen(a);i++){
if(a[i]=='*') {;}
else cout<<a[i];
}
while(cnt1--)
cout<<'*';
cout<<endl;
}
return 0;
}
1159 问题 N: 零基础学C/C++159——最长字符串
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int n;
while(cin>>n){
string s[100]={};
int smax=0,p;
for(int i=0;i<n;i++){
cin>>s[i];
if(smax<s[i].size()){
smax=s[i].size();
p=i;
}
}
cout<<s[p]<<endl;
}
return 0;
}
*1160 问题 O: 零基础学C/C++160——字符串
这道题数据量很大,字符串长度很长,需要做特殊优化
当字符串A
26个小写英文字母集齐后,直接判断Yes,不用再看字符串B
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1001000];
while(cin>>a){
int cnt1=-1,i,j,sum=0,flag3=-1;
long long list[30]={0};
for(i=0;i<strlen(a);i++){
if(i%26==0){
sum=0;
for(j=0;j<26;j++)
sum+=list[j];
if(sum==26){
flag3=2;
break;
}
}
if(a[i]!='#') list[a[i]-'a']=1;
else break;
}
if(flag3==-1){
for(j=i+1;j<strlen(a)-1;j++){
if(list[a[j]-'a']!=1){
flag3=1;
break;
}
}
}
if(flag3==1) cout<<"No\n";
else cout<<"Yes\n";
}
return 0;
}
未完待续21.10.8
1161 问题 A: 零基础学C/C++161——求阶乘的函数
#include<iostream>
using namespace std;
int main(){
short n;
while(cin>>n){//懒得用函数hhh
long long ans=1;
for(int i=1;i<=n;i++)
ans*=i;
cout<<ans<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main(){
short n;
while(cin>>n){
long long ans=1,sum=0;
for(int i=1;i<=n;i++){
ans*=i;
sum+=ans;
}
cout<<sum<<endl;
}
return 0;
}
1163 问题 C: 零基础学C/C++163——判断是否是素数的函数
#include<iostream>
using namespace std;
int main(){
int n,i;
while(cin>>n){
if(n==1){
cout<<"No\n";
continue;
}
bool isPrime=true;
for(i=2;i<=n/2;i++){
if(n%i==0){
isPrime=false;
break;
}
}
if(isPrime) cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
#include<iostream>
using namespace std;
int i,j,x,y;
bool ip(int n){
if(n==1) return false;
bool isPrime=true;
for(j=2;j<=n/2;j++){
if(n%j==0){
isPrime=false;
break;
}
}
if(isPrime) return true;
else return false;
}
int main(){
while(cin>>x>>y){
if(x==0 and y==0) break;
int f=0;
for(i=x;i<=y;i++){
if(ip((int)(i*i+i+41))==false){
f=1;
cout<<"Sorry\n";
break;
}
}
if(f==0) cout<<"Ok\n";
}
return 0;
}
#include<iostream>
using namespace std;
int i,j,x,y;
bool ip(int n){
if(n==1) return false;
bool isPrime=true;
for(j=2;j<=n/2;j++){
if(n%j==0){
isPrime=false;
break;
}
}
if(isPrime) return true;
else return false;
}
int main(){
while(cin>>x>>y){
int f=0;
for(i=x;i<=y;i++){
if(ip(i)==true and f==0){
f=1;
cout<<i;
}
else if(ip(i)==true and f==1)
cout<<" "<<i;
}
cout<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
long long fact(int x){
long long ans=1;
for(int i=1;i<=x;i++)
ans*=i;
return ans;
}
int main(){
int n,m;
while(cin>>n>>m){
int a,b,c;
a=fact(n);
b=fact(m);
c=fact(n-m);
cout<<a/(b*c)<<endl;
}
return 0;
}
1167 问题 G: 零基础学C/C++167——判断是否完数
#include<iostream>
using namespace std;
void perf(int x){
int s=0;
for(int j=1;j<x;j++)
if(x%j==0) s+=j;
if(s==x) cout<<x<<" ";
}
int main(){
int n,m;
while(cin>>n>>m){
for(int i=n;i<=m;i++)
perf(i);
cout<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int cnt(long long n,char m){
char s[100]={0};
sprintf(s,"%lld",n);
int ans=0;
for(int i=0;i<strlen(s);i++)
if(s[i]==m) ans++;
return ans;
}
int main(){
long long n;
char m;
while(cin>>n>>m)
cout<<cnt(n,m)<<endl;
return 0;
}
1169 问题 I: 零基础学C/C++169——调用函数,求三个数中最大数
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
while(cin>>a>>b>>c)
cout<<max(a,max(b,c))<<endl;
//有库不用,罚款50
return 0;
}
1170 问题 A: 零基础学C/C++170——输出学生信息
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[100],b[100],c[100],d[100];
cin>>a>>b>>c>>d;
printf("%s %s %s %s\n",a,b,c,d);
//保留小数?不存在的
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct node{
string na,se;
int ye,mo;
}st[1000];
bool cmp(node x,node y){
if(x.ye == y.ye ) return x.mo > y.mo;
else return x.ye>y.ye;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>st[i].na>>st[i].se>>st[i].ye>>st[i].mo;
sort(st,st+n,cmp);
for(int i=0;i<n;i++)
printf("%s %s %d %d\n",st[i].na.c_str(),st[i].se.c_str(),st[i].ye,st[i].mo);
return 0;
}
不是排版问题 题号确实是这样
*1173 问题 C: 零基础学C/C++173——桌面窗体重叠
这道题需要稍微想一想,代码很简单。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[10]={},b[10]={},s=0;
cin>>a[1]>>a[2]>>b[1]>>b[2];
cin>>a[3]>>a[4]>>b[3]>>b[4];
if(a[2]<=a[3] or b[2]<=b[3] or a[4]<=a[1] or b[4]<=b[1]){
cout<<0;return 0;
}
sort(a,a+5);sort(b,b+5);
s=(a[3]-a[2])*(b[3]-b[2]);
cout<<s;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a,b,c;
long long a1=0,b1=0,c1=0;
for(int i=0;i<n;i++){
cin>>a>>b>>c;
a1+=a;b1+=b;c1+=c;
}
b1+=c1/60;c1%=60;
a1+=b1/60;b1%=60;
printf("%lldhour %lldminute %lldsecond",a1,b1,c1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct node{
string na;
int h,id;
}st[1000];
bool cmp(node x,node y){
if(x.h == y.h ) return x.id < y.id;
else return x.h>y.h;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>st[i].na>>st[i].h>>st[i].id;
sort(st,st+n,cmp);
printf("%s %d %d\n",st[0].na.c_str(),st[0].h,st[0].id);
return 0;
}
1176 问题 F: 零基础学C/C++176——生日相同问题
这道题可以用结构体数组+sort,但手写一个选择排序也问题不大。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string a[300]={};
int b[300]={0},c[300]={0};
int buc[100][100]={0};
for(int i=0;i<n;i++)
cin>>a[i]>>b[i]>>c[i];
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
if(a[i].size()>a[j].size()){
swap(a[i],a[j]);
swap(b[i],b[j]);
swap(c[i],c[j]);
}
else if(a[i].size()==a[j].size()){
if(a[i]>a[j]){
swap(a[i],a[j]);
swap(b[i],b[j]);
swap(c[i],c[j]);
}
}
}
}
for(int i=0;i<n;i++)
buc[b[i]][c[i]]++;
int flag=0;
for(int i=1;i<=12;i++){
for(int j=1;j<=31;j++){
if(buc[i][j]>1){
cout<<i<<" "<<j;
flag=1;
for(int k=0;k<n;k++)
if(b[k]==i and c[k]==j) cout<<" "<<a[k];
cout<<endl;
}
}
}
if(flag==0) cout<<"None\n";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string a;
int b,sum=0;
int c1=0;
char x;
for(int i=0;i<n;i++){
cin>>x;
if(x=='C'){
c1++;
cin>>a;
}
if(x=='N'){
cin>>b;
sum+=b;
}
}
cout<<c1<<" "<<sum/(n-c1);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
char o;
char s[20];
long long q;
unsigned long long sum=0;
int man=0,wom=0;
for(int i=0;i<n;i++){
cin>>o;
if(o=='i'){
cin>>s;
if((s[16]-'0')%2==0) wom++;
else man++;
}
else{
cin>>q;
sum+=q;
}
}
cout<<man<<" "<<wom<<" "<<sum/(n-man-wom);
return 0;
}
1172 问题 I: 零基础学C/C++172——猴子选大王
#include<bits/stdc++.h>
using namespace std;
int main(){
//约瑟夫环问题
int i,j,n,a[1010],t,len;
long long m;
cin>>n>>m;
len=n;
for(i=0;i<n;i++)
a[i]=i+1;
i=0;
while(n>1){
i=(i+m-1)%n;//套公式
t=a[i];
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
}
reverse(a,a+len);
cout<<a[len-1];
return 0;
}
未完待续 21.10.9
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
a>=b?cout<<b*2:cout<<a*2;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int f=0;
if(a==1){
if(b==1)f=3;
if(b==2)f=1;
if(b==3)f=2;
}
if(a==2){
if(b==1)f=2;
if(b==2)f=3;
if(b==3)f=1;
}
if(a==3){
if(b==1)f=1;
if(b==2)f=2;
if(b==3)f=3;
}
if(f==1)cout<<"win";
if(f==2)cout<<"lose";
if(f==3)cout<<"tie";
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n,m,t=0,q;
cin>>n>>m;
while(n>=m){
q=n%m;
t=t+n-q;
n=n/m+q;
}
t+=n;
if(m-n==1) t++;
cout<<t;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
long long a[n+10]={};
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=n-1;i>=0;i--)
cout<<a[i]<<" ";
return 0;
}
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL squre(int tstu,int index){
LL ans=0;
while(tstu>0){
ans+=pow(tstu%10,index+1);
tstu/=10;
}
return ans;
}
int main(){
int n,stulen=0,grolen=0;
cin>>n;
LL stu[300],group[300];
while(cin>>stu[stulen] and stu[stulen]!=-1)
stulen++;
sort(stu,stu+stulen);
for(int i=1;i<=n;i++){
grolen=0;
for(int j=0;j<stulen;j++)
group[grolen++]=squre(stu[j],i);
for(int j=0;j<grolen;j++)
for(int k=0;k<stulen;k++)
if(group[j]==stu[k]) stu[k]=0;
}
for(int i=0;i<stulen;i++)
if(stu[i]!=-1 and stu[i]!=0) cout<<stu[i]<<" ";
return 0;
}
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
int row,col;
long long val;
int num;
}a[10000];
bool cmp(node x,node y){
if(x.col==y.col) return x.num<y.num;
else return x.col<y.col ;
}
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=0;i<k;i++){
cin>>a[i].row>>a[i].col>>a[i].val;
a[i].num=i;
}
sort(a,a+k,cmp);
cout<<a[0].val;
for(int i=1;i<k;i++)
cout<<" "<<a[i].val;
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+10];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=1;i<n-1;i++)
if(a[i-1]<a[i] and a[i]>a[i+1]) cout<<a[i]<<" ";
return 0;
}
1187 问题 H: 零基础学C/C++187——美丽的黄山
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+10],max=-1,ans=0;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]>max){
ans++;
max=a[i];
}
}
cout<<ans;
return 0;
}
本题我使用了快读和快写
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
inline string StringRead(){
string str;
char s=getchar();
while (s==' ' || s=='\n' || s=='\r')
s=getchar();
while (s!=' ' && s!='\n' && s!='\r'){
str+=s;
s=getchar();
}
return str;
}
inline void StringWrite(std::string str){
int i=0;
while (str[i]!='\0')
putchar(str[i]), i++;
}
int main(){
int n;
cin>>n;
string a[100000]={};
for(int i=0;i<n;i++)
a[i]=StringRead();
sort(a,a+n);
for(int i=0;i<n;i++){
StringWrite(a[i]);
printf("\n");
}
return 0;
}
1189 问题 J: 零基础学C/C++189——模拟计算器
#include<iostream>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int k;
cin>>k;
if(k==1) cout<<m+n;
if(k==2) cout<<m-n;
if(k==3) cout<<m*n;
if(k==4) cout<<int(m/n);
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
long long a[1000];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
if(a[i]>a[j]) swap(a[i],a[j]);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
}