文章目录
- 7-1 6翻了
- 7-2 幸运彩票
- 7-3 点赞
- 7-4 猜数字
- 7-5 出租
- 7-6 A-B
- 7-7 连续因子
- 7-8 天梯赛座位分配
- 7-9 大笨钟
- 7-10 敲笨钟
- 7-11 整除光棍
7-1 6翻了
#include<iostream>
#include<string>
using namespace std;
int main() {string str;int s;int count = 0;getline(cin, str);for (int i = 0; i < str.size(); i++) {count = 0;while (str[i] == '6')++i,++count; if(count>9){cout<<27;}else if(count>3){cout<<9;}else cout<<string(count,'6');cout << str[i];}return 0;
}
7-2 幸运彩票
#include <stdio.h>
int main()
{int a,i,n,b,c,d,e,f,x;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&x);a=x/100000;b=x/10000%10;c=x/1000%10;d=x/100%10;e=x/10%10;f=x%10;if(a+b+c==d+e+f){printf("You are lucky!\n");}else{printf("Wish you good luck.\n");}}return 0;}
7-3 点赞
#include<stdio.h>
int S[1002];
int main()
{int n ;scanf("%d",&n) ;while(n--){int n1 ;scanf("%d",&n1) ;while(n1--){int x ;scanf("%d",&x) ;S[x] ++ ;}}int a = -1 ;int id = -1 ;for(int i=1;i<=1000;i++){if(S[i]>=a){a = S[i] ;id = i ;}}printf("%d %d",id,a) ;
}
7-4 猜数字
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct E{
char name[11];
int num;
}a[10001];
int main(){int n,sum=0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%s%d",a[i].name,&a[i].num);sum+=a[i].num;}int avg=(sum/n)/2,minm=11111,tag;for(int i=0;i<n;i++){if(abs(avg-a[i].num)<minm){minm=abs(avg-a[i].num);tag=i;}}printf("%d %s\n",avg,a[tag].name);return 0;
}
7-5 出租
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{return a>b;
}
int main(){char num[11];int arr1[11]={0},arr[11],count=0,index[11];for(int i=0;i<11;i++){arr[i]=-1;cin>>num[i];arr1[num[i]-'0']++;}for(int i=0;i<11;i++){if(arr1[i]>0)arr[count++]=i;}//sort(arr,arr+count,compare);sort(arr,arr+count,greater<int>());for(int i=0;i<count;i++){for(int j=0;j<11;j++){if(num[j]-'0'==arr[i])index[j]=i;}}cout<<"int[] arr = new int[]{";cout<<arr[0];for(int i=1;i<count;i++)cout<<","<<arr[i];cout<<"};"<<endl;cout<<"int[] index = new int[]{";cout<<index[0];for(int i=1;i<11;i++)cout<<","<<index[i];cout<<"};";return 0;
}
7-6 A-B
#include<bits/stdc++.h>
using namespace std;
int x[10000];
int main()
{string a,b;getline(cin,a);getline(cin,b);int lena=a.size();int lenb=b.size();for(int i=0;i<lenb;i++){x[b[i]]=1;}for(int i=0;i<lena;i++){if(x[a[i]]==1)continue;else{cout<<a[i];}}return 0;
}
7-7 连续因子
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline bool Prime(ll x) /*判断一个数是否为质数*/
{if(x==1)return 0;if(x==2||x==3)return 1;for(int i=2;i<=sqrt(x);i++){if(x%i==0)return 0;}return 1;
}
ll n,ansl,ansr=-1;
int main()
{cin>>n;if(Prime(n))return cout<<1<<endl<<n<<endl,0;for(ll i=2;i*i<=n;i++){ll t=n,j=i;while(t%j==0) {t/=j;j++;}if(j-i>ansr-ansl+1){ansl=i;ansr=j-1;}}cout<<ansr-ansl+1<<endl;for(ll i=ansl;i<=ansr;i++){cout<<i;if(i<ansr)cout<<'*';else cout<<endl;}return 0;
}
7-8 天梯赛座位分配
#include<stdio.h>
int main(){int n,m,max=0,map[101][101]={0},s[101][101]={0};scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&m);if(m>max) max=m;//记录最大 for(int j=0;j<m*10;j++){map[i][j]=1; //初始化 }}int flag=-1; //flag用于记录是否是同一所学校 int sum=1; //sum表示当前座位号 for(int i=0;i<max*10;i++) {for(int j=0;j<n;j++)//几个学校 {if(map[j][i])//第j个学校第i个人 {if(flag!=j)//如果上一个不是自己学校的人 {s[j][i]=sum++;flag=j;}else//如果是自己学校的人 {sum+=1;//要隔开 s[j][i]=sum++;flag=j;} }} }//输出for(int i=0;i<n;i++){printf("#%d\n",i+1);for(int j=0;j<max*10;j++)if(s[i][j]){printf("%d%c",s[i][j],(j+1)%10?' ':'\n');}}return 0;
}
7-9 大笨钟
#include<stdio.h>
int main()
{int m, n,h,i,k;char c;scanf("%d:%d", &m, &n);if (m >= 13 && m < 24){h = m - 12;if(n != 0) k = h + 1;else if(n == 0)k = h;for (i = 0; i < k; i++){printf("Dang");}}elseprintf("Only %02d:%02d. Too early to Dang.",m,n);
}
7-10 敲笨钟
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
int main(){int j,n;scanf("%d",&n);getchar();while(n--){string a;getline(cin,a);int flag=1,cnt=0;for(int i=0;i<a.size();i++){if(a[i]==','){if(a[i-1]!='g') flag=0;if(a[i-2]!='n') flag=0;if(a[i-3]!='o') flag=0;}if(a[i]=='.'){if(a[i-1]!='g') flag=0;if(a[i-2]!='n') flag=0;if(a[i-3]!='o') flag=0;}}if(flag){ for (j=a.size()-1;j>= 0;j--){if (a[j]==' ') cnt++; if (cnt==3) break; }for (int k=0;k<j;k++)printf("%c",a[k]);printf(" qiao ben zhong.\n");}else{printf("Skipped\n");}}return 0;
}
7-11 整除光棍
模拟除法,每次取一位商,余数加下一位,当商为0时,不保存。
#include<stdio.h>
int main()
{int n,i,x=0,flag=0;scanf("%d",&n);for(i=1;;i++){x=x*10+1;if(x>=n){flag=1;printf("%d",x/n);}else if(flag==1) printf("0");x=x%n;if(x==0) break;}printf(" %d",i);return 0;
}