# 第二测 3小时

1题目背景

(当然，也可能是唯一一道）

input
27
output
11011
33
1B

#include<cstdio>
#include<iostream>
using namespace std;
char MAP[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
long long in;
void change(long long aim, long long sys){
if(aim){
change(aim/sys, sys);
int t = aim%sys;
if(t>=10)   cout << MAP[t-10];
else        cout << t;
}
}
int main(void){
//  freopen("change10.in", "r", stdin);
//  freopen("change10.out", "w", stdout);
cin >> in;
change(in, 2);
cout << endl;
change(in, 8);
cout << endl;
change(in, 16);
}


#include<iostream>
using namespace std;

unsigned int num;

void zh(unsigned int num, int k){
int ws=0, d[40]={0};
while(num){
d[ws++]=num%k;
num/=k;
}
ws--;
for(int i=ws; i>=0; i--){
if(d[i]<=9)     cout<<d[i];
if(d[i]==10)    cout<<'A';
if(d[i]==11)    cout<<'B';
if(d[i]==12)    cout<<'C';
if(d[i]==13)    cout<<'D';
if(d[i]==14)    cout<<'E';
if(d[i]==15)    cout<<'F';
}
cout<<endl;
}
int main(){
cin>>num;
zh(num, 2);
zh(num, 8);
zh(num, 16);
return 0;
}


#include<iostream>
#include<cstdio>
using namespace std;
int a[50];
void f(long long n){
int m=0;
for(int j=1;j<=50;j++){
int d=0;
d=n%2;
if(n!=0) {a[j]=d;
m++;}
n/=2;}
for(int i=m;i>=1;i--)
cout<<a[i];
cout<<endl;
}
int main(){
long long n;
cin>>n;
f(n);
printf("%o\n",n);
printf("%X\n",n);
}


#include<iostream>
#include<string>
using namespace std;
int s[1000010];
int main()
{
long long n;
cin>>n;
long long x,y,z;
for(int i=2;i<=16;i+=2)
{
if(i==2)
{
x=n;
long long c,m=0;
while(x!=0)
{
c=x%2;
x=x/2;
s[m]=c;
m++;
}
for(int i=m-1;i>=0;i--)
{
if(s[i]>=10) cout<<(char)(s[i]+55);
else cout<<s[i];
}
cout<<endl;
}
if(i==8)
{
y=n;
long long c,m=0;
while(y!=0)
{
c=y%8;
y=y/8;
s[m]=c;
m++;
}
for(int i=m-1;i>=0;i--)
{
if(s[i]>=10) cout<<(char)(s[i]+55);
else cout<<s[i];
}
cout<<endl;
}
if(i==16)
{
z=n;
long long c,m=0;
while(z!=0)
{
c=z%16;
z=z/16;
s[m]=c;
m++;
}
for(int i=m-1;i>=0;i--)
{
if(s[i]>=10) cout<<(char)(s[i]+55);
else cout<<s[i];
}
cout<<endl;
}
}
return 0;
}


2问题描述

input
10
output
4 5

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int P[10000010]={1,1};
int main(){
int ft,n,cnt=0;
int max=-1,min=20000000;
scanf("%d",&n);
for(int i=2;i<=ceil(sqrt(10000000));++i){
ft=0;
for(int j=2;j<=floor(sqrt(i));++j){
if(i%j==0){
ft=1;
break;
}
}
if(!ft){
for(int j=i*i;j<=10000000;j+=i){
P[j]=1;
}
}
}

for(int i=1;i<=n;++i){
if(!P[i]){
++cnt;
if(i>max)   max=i;
if(i<min)   min=i;
}
}

cout<<cnt<<" "<<max-min;

return 0;
}


#include<iostream>
#include<cmath>
using namespace std;

bool a[10000010]{1, 1};

int main(){
for(int i=2; i<=ceil(sqrt(10000005)); i++){
int flag=1;
for(int j=2; j<=floor(sqrt(i)); j++){
if(i%j==0){
flag=0;
a[i]=1;
break;
}
}
if(flag)
for(int j=i*i; j<=10000005; j+=i)
a[j]=1;
}
int n, cnt=0, tmax=-1, tmin=100000;
cin>>n;
for(int i=1; i<=n; i++){
if(a[i]==0){
if(i>tmax)
tmax=i;
if(i<tmin)
tmin=i;
cnt++;
}
}
cout<<cnt<<" "<<tmax-tmin;
return 0;
}


#include<iostream>
using namespace std;
bool is[10000000]={0};
int zhishu[10000000];
int main(){
int n,cnt=0,max=-1,min=100000000;
cin>>n;
for(int i=2;i<=n;i++)
is[i]=true;
for(int i=2;i<=n;i++){
if(is[i]){
zhishu[++cnt]=i;
for(int j=i*2;j<=n;j+=i)
is[j]=false;}
}
for(int i=1;i<=cnt;i++){
max=zhishu[i]>max?zhishu[i]:max;
min=zhishu[i]<min?zhishu[i]:min;}
cout<<cnt<<" "<<max-min;
return 0;
}


#include<iostream>
using namespace std;
const int inf=10000005;
int prime[inf];
bool is_prime[inf+1];
int shai(int n){
int p=0;
for(int i=0;i<=n;i++)  is_prime[i]=true;
is_prime[0]=false;
is_prime[1]=false;
for(int i=2; i<=n; i++){
if(is_prime[i]){
prime[p++]=i;
for(int j=2; j*i<=n; j++)
is_prime[j*i]=false;
}
}
return p;
}
int main(){
int m;
cin>>m;
int num=shai(m);
cout<<num<<" "<<prime[num-1]-2;
return 0;
}


3双月同天

0xis 解码后，发现这是一段 A++ 代码。来回翻阅代码十分麻烦，吊打高二的你决定帮助 0xis。

A++ 的变量前需要加$，例如$$，例如$int=5;$intt=$$intt=$int+1;。A++ 的变量不需要定义，直接给变量赋值即可。

• 保证不会在” “、注释等内出现$字符。凡是$$字符。凡是$字符都表示变量。
• 保证不会在” “、注释等内出现$字符。凡是$$字符。凡是$字符都表示变量。
• 保证不会在” “、注释等内出现$字符。凡是$$字符。凡是$字符都表示变量。

ak
output
-1

C++ 语言基础测试
naci的解法

#include <cstdio>
#include <cstring>
#include <cctype>
#include <iostream>
const int MAXN = 1000001;
char a[MAXN], b[MAXN] = "$"; int f[MAXN] = {-1}, ans = 0, fir = -1; int main() { std::cin >> a >> b + 1; int la = strlen(a), lb = strlen(b); for(int i = 0, j = 1;; i++, j++) if(j >= lb) { f[j] = i; break; } else if(b[i] == b[j]) f[j] = f[i]; else { f[j] = i; do i = f[i]; while(i >= 0 && b[i] != b[j]); } for(int i = 0, j = 0; i < la; ) if(a[i] == b[j]) { i++, j++; if(j == lb) { j = f[j]; if(!isalpha(a[i])) { ans++; if(!~fir) fir = i - lb; }}} else { j = f[j]; if(j < 0) i++, j++; } std::cout << fir << ' ' << ans << std::endl; return 0; }  cyx的解法  #include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[10100]; char a[10100]; int lena; int cnt=0; bool ft=1; int main () { cin.getline(s,10000); cin.getline(a,10000); int lens=strlen(s); int lena=strlen(a); for(int i=0; i<lens; ++i) { if(s[i]=='$') {
bool f=0;
++i;
int lenc=0;
//读取长度
while(s[i]>='a' && s[i]<='z') {
++lenc;
++i;
}
--i;
//比较长度
if(lenc==lena) {
//判断相同
for(int j=lena-1,z=i; j>=0; j--,z--) {
if(a[j]!=s[z]) {
f=1;
break;
}
}
} else {
continue;
}
//判断
if(!f ) {
if(ft) {
cout<<i-lenc;
ft=0;
}
++cnt;//计数
}
}
}
if(ft) {
cout<<"-1";
}else{
cout<<" "<<cnt;
}
return 0;
}



kb的解法

#include<iostream>
#include<cstring>
using namespace std;

char a[10010];
char b[10010];

int main(){
cin>>a;
cin>>b;
int flag=1, wz, cnt=0;
for(int i=0; i<strlen(a); i++){
int ws=-1;
if(a[i]=='\$'){
char c[10010]={'0'};
for(int j=i+1; ; j++){
if(a[j]>'z' || a[j]<'a')
break;
c[++ws]=a[j];
}
if(strstr(c, b)){
if(strstr(b, c)){
cnt++;
if(flag){
wz=i;
flag=0;
}
}
}
}
}
if(cnt!=0)
cout<<wz<<" "<<cnt;
else
cout<<"-1";
return 0;
}


4问题背景

P.S.P.S. 像8,3,38,3,3 和 3,3,83,3,8 是同一种分法。
P.S.P.S. 像6,0,06,0,0 和 0,0,60,0,6 是不正确的分法。

input
8 5
output
3

input
16 9
output
15

all(m,n)=all(m-n,n)+all(m,n-1);

C++ 语言基础测试

kb的解法

#include<iostream>
using namespace std;

int all(int m, int n){
if(m<n)         return 0;
if(m==n)        return 1;
if(n==1)        return 1;
else            return all(m-n, n)+all(m-1, n-1);
}

int main(){
int m, n;
cin>>m>>n;
cout<<all(m, n);
return 0;
}


5问题背景

input
5
1 2 3 3 4
output
1 2 4 3 5

C++ 语言基础测试

#include<iostream>
#include<algorithm>
using namespace std;

struct item{
int ai, no;
};

bool cmp(item a, item b){
if(a.ai<b.ai)   return true;
if(a.ai>b.ai)   return false;
if(a.ai==b.ai){
if(a.no<b.no)   return false;
else                    return true;
}
}

int n;
item d[200010];

int main(){
cin>>n;
for(int i=1; i<=n; i++){
cin>>d[i].ai;
d[i].no=i;
}
sort(d+1, d+n+1, cmp);
for(int i=1; i<n; i++)
cout<<d[i].no<<" ";
cout<<d[n].no<<endl;
return 0;
}


#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;

struct item{
int ai, no;
};

bool cmp(item a, item b){
if(a.ai<b.ai)   return true;
if(a.ai>b.ai)   return false;
if(a.ai==b.ai){
if(a.no<b.no)   return false;
else            return true;
}
}

int n;
item d[200010];

int main(){
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d", &d[i].ai);
d[i].no=i;
}
sort(d+1, d+n+1, cmp);
for(int i=1; i<n; i++)
printf("%d ", d[i].no);
printf("%d\n", d[n].no);
return 0;
}


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct number
{
int xh;
int point;
}a[200005];
bool cmp(number x,number y)
{
if(x.point==y.point) return x.xh>y.xh;
else return x.point<y.point;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)   scanf("%d",&a[i].point),a[i].xh=i;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++) printf("%d ",a[i].xh);
return 0;
}



SocietyNiu的解法

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct number
{
int xh;
int point;
}a[200005];
bool cmp(number x,number y)
{
if(x.point==y.point) return x.xh>y.xh;
else return x.point<y.point;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)   scanf("%d",&a[i].point),a[i].xh=i;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++) printf("%d ",a[i].xh);
return 0;
}



07-13 73

05-30 91

08-31 1万+

04-13 6101

04-21 7072

09-14 1629

11-29 8487

11-16 858

02-28 2292

12-12 1445

#### Hbase offHeap(堆外内存)测试

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。