7-1 Hello World! (5分)
#include<bits/stdc++.h> using namespace std; int main() { cout<<"Hello World!"<<endl; return 0; }
7-2 电子汪 (10分)
在一行中输出 A + B 个Wang!
。
#include<bits/stdc++.h> using namespace std; int main() { int a,b; cin>>a>>b; for(int i=0;i<a+b;i++){ cout<<"Wang!"; } return 0; }
7-3 大笨钟 (10分)
给出一个时间,十二点之前,输出“Only hh:mm. Too early to Dang.”,十二点之后,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数
#include<bits/stdc++.h> using namespace std; int main() { int a,b; scanf("%d:%d",&a,&b); if(a<12){ printf("Only %02d:%02d. Too early to Dang.",a,b); }else if(a==12){ if(b!=0){ printf("Dang"); }else{ printf("Only %02d:%02d. Too early to Dang.",a,b); } } else{ for(int i=0;i<a-12;i++){ printf("Dang"); } if(b!=0){ printf("Dang"); } } return 0; }
7-4 个位数统计 (15分)
一个不超过 1000 位的正整数 N,统计各个位上数字的出现次数,按顺序输出
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; int a[20]={0},i; for(i=0;i<s.length();i++){ a[s[i]-'0']++; } for(i=0;i<=9;i++){ if(a[i]!=0) cout<<i<<":"<<a[i]<<endl; } return 0; }
7-5 古风排版 (20分)
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)
将字符串每位依次存入n个数组,将n个数组依次逆序输出
#include<bits/stdc++.h> using namespace std; int main() { int n,flag=0,i,j,maxx=0; cin>>n; getchar(); string s; char a[110][1010]; int b[110]; getline(cin,s); //This is a test case for(i=0;i<n;i++){ int k=0; for(j=i;j<s.length();j+=n){ a[i][++k]=s[j]; //cout<<s.length()<<endl; } b[i]=k; //cout<<k<<endl; maxx=max(k,maxx); } for(i=0;i<n;i++){ if(b[i]==maxx){ for(j=0;j<b[i];j++){ cout<<a[i][b[i]-j]; } } if(b[i]==maxx-1){ cout<<" "; for(j=0;j<b[i];j++){ cout<<a[i][b[i]-j]; } } cout<<endl; } return 0; }
7-7 PTA使我精神焕发 (5分)
#include<bits/stdc++.h> using namespace std; int main() { cout<<"PTA shi3 wo3 jing1 shen2 huan4 fa1 !"<<endl; return 0; }
7-8 稳赢 (15分)
根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
#include<bits/stdc++.h> using namespace std; int main() { int n,flag=0; cin>>n; string s; cin>>s; while(s!="End"){ flag++; if(flag>n){ cout<<s<<endl; flag=0; }else{ if(s=="ChuiZi") cout<<"Bu"<<endl; else if(s=="JianDao") cout<<"ChuiZi"<<endl; else if(s=="Bu") cout<<"JianDao"<<endl; } cin>>s; } return 0; }
7-10 人以群分 (25分)
将n个数排序,求出前半部分和后半部分的差
#include<bits/stdc++.h> using namespace std; int a[100010]; int main() { int n,i; long long sum=0,sum2=0; cin>>n; for(i=0;i<n;i++){ cin>>a[i]; sum+=a[i]; } sort(a,a+n); for(i=0;i<n/2;i++){ sum2+=a[i]; } cout<<"Outgoing #: "<<n/2+n%2<<endl; cout<<"Introverted #: "<<n/2<<endl; cout<<"Diff = "<<sum-sum2-sum2<<endl; return 0; }
7-6 连续因子 (20分)
给出一个数字n,求出最小连续因子的个数,并输出最小的连续因子序列
参考大佬代码
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main(){ int n,sum,flag; scanf("%d",&n); for(int i = 13;i >= 1;i--){ for(int j = 2;j <= sqrt(n);j++){ sum = 1,flag = 0; for(int k = 0;k < i;k++){ sum = sum * (j + k); if(sum > n){ break; } } if(sum <= n && n % sum == 0){ printf("%d ",i); for(int k = 0;k < i;k++){ if(k == 0){ printf("%d",j + k); } else{ printf("*%d",j +k); } } flag = 1; } if(flag == 1){ break; } } if(flag == 1){ break; } } if(n == 2 || n == 3 || flag == 0){ //n == 2 和 n == 3 需要特殊判断下,因为sqrt(2),sqrt(3)都小于2,第一个循环进不去 printf("1 %d ",n); } return 0; }