刷题2路1线

开往:算法

1117. 【入门】绝对素数 [ 提交记录 ]
结果评判: 文本对比
正确/提交: 7 / 12
官方标签:  函数
入门
题目描述
如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13,试编程求出所有两位数中的绝对素数。
输入描述

输出描述
若干行,每行一个绝对素数,从小到大输出
#include<iostream>
using namespace std;
int main(){
    int a[]{11,13,17,31,37,71,73,79,97};
    for(int i=0;i<9;i++){
        cout<<a[i]<<"\n";
    }
    
}

1393. 询问学号 [ 提交记录 ]
结果评判: 文本对比
正确/提交: 30 / 80
官方标签:  模拟
入门
题目描述
有 n(n≤2×106)
 名同学陆陆续续进入教室。我们知道每名同学的学号(在 1
 到 109
 之间),按进教室的顺序给出。上课了,老师想知道第 i
 个进入教室的同学的学号是什么(最先进入教室的同学 i=1
),询问次数不超过 105
 次。

输入描述
第一行 2
 个整数 n
 和 m
,表示学生个数和询问次数。

第二行 n
 个整数,表示按顺序进入教室的学号。

第三行 m
 个整数,表示询问第几个进入教室的同学。

输出描述
输出 m
 个整数表示答案,用换行隔开。

输入输出样例
×💡 样例只是举一个例子,并非全部测试数据,请保证您的程序能满足任意符合题意的数据!
输入

复制
10 3
1 9 2 60 8 17 11 4 5 14
1 5 9
输出

复制
1
8
5
#include<iostream>
using namespace std;
int a[2000001];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int x;
    for(int i=1;i<=m;i++){
        cin>>x;
        cout<<a[x]<<endl;
    }
    return 0;
}
1077. 幂的末尾 [ 提交记录 ]
结果评判: 文本对比
正确/提交: 11 / 14
官方标签:  循环结构
入门
题目描述
幂ab的末3位数是多少?
输入描述
两个正整数a,b。1≤a≤100,1≤b≤10000。
输出描述
从高位到低位输出幂的末三位数字,中间无分隔符。若幂本身不足三位,在前面补零。
输入输出样例
×💡 样例只是举一个例子,并非全部测试数据,请保证您的程序能满足任意符合题意的数据!
输入

复制
7 2011
输出

复制
743
#include<iostream>

#include<string>
using namespace std;

int a[1007]={1}; 
int b[1000]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int main(){
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=n;i++){
        for(int j=0;j<=1000;j++){
            a[j]*=m;
            //需要单独处理进位,把进位调到这里有问题
            //进位在下面:2^4=16;进位在这:2^4=26
            
        }
        for(int j=0;j<=1000;j++){
            //进位
            a[j+1]=a[j+1]+a[j]/10;
            a[j]%=10;
            
        }
    }
    int ptr=0;//指针,标记输出位置
    for(int i=1000;i>=0;i--){//倒序找出,倒序输出,列表:4 0 2 1,输出:1024
        if(a[i]>0){
            ptr=1;//找到了(不是0的时候,也能用a[i]!=0)
        }
        if(ptr==1){//如果找到,倒序输出
            cout<<a[2]<<a[1]<<a[0];
            return 0;
        }
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
int p(int n){
    for(int i=2;i<n;i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
int y(int n){
int sum=0;
for(int i=1;i<n;i++){
    if(n%i==0){
     sum+=i;
        //cout<<"yin"<<i<<endl;;
}
}
    return sum;
}

int main(){
    int n,sum=0;;
    cin>>n;
    for(int i=1;i<=n;i++){
        if(!p(i)&&sum+y(i)<=n){
            //cout<<i<<' '<<y(i)<<endl;
            sum+=y(i);
        }
    }
    cout<<sum;
    return 0;
}
2187. 字符串中的空格移位 [ 提交记录 ]
结果评判: 文本对比
正确/提交: 2 / 2
官方标签:  字符串
普及/提高-
题目描述
输入一个字符串,将其中的所有空格都移到最前面,然后输出。
输入描述
一个字符串。如:a□b□c(为了能看清空格,□代表一个空格,但实际测试数据中不用□表示空格)
输出描述
空格全部移到了串前的字符串。如:□□abc
输入输出样例
×💡 样例只是举一个例子,并非全部测试数据,请保证您的程序能满足任意符合题意的数据!
输入

复制
a b c
输出

复制
  abc
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    getline(cin,s);//cout<<s.size()<<s;;
    int ksum=0;
    for(int i=0;i<s.size()-1;i++){
        if(s[i]==' '){
            ksum++;
            
        }
    }
    for(int i=0;i<ksum;i++){
        cout<< ' ';
    }
    for(int i=0;i<s.size();i++){
        
        if(s[i]!=' '){
            cout<<s[i];
        }
    }
    return 0;
}
m^n计算(次方)
#include<iostream>

#include<string>
using namespace std;

int a[1007]={1}; 
int main(){
    int n,m;
    cin>>m>>n;
    if(m==0){
        cout<<0;
        return 0;
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<=1000;j++){
            a[j]*=m;
            //需要单独处理进位,把进位调到这里有问题
            //进位在下面:2^4=16;进位在这:2^4=26
            
        }
        for(int j=0;j<=1000;j++){
            //进位
            a[j+1]=a[j+1]+a[j]/10;
            a[j]%=10;
            
        }
    }
    int ptr=0;//指针,标记输出位置
    for(int i=1000;i>=0;i--){//倒序找出,倒序输出,列表:4 0 2 1,输出:1024
        if(a[i]>0){
            ptr=1;//找到了(不是0的时候,也能用a[i]!=0)
        }
        if(ptr==1){//如果找到,倒序输出
            cout<<a[i];
        }
    }
    return 0;
}

1. 字符串编辑 
结果评判: 文本对比
正确/提交: 8 / 86
官方标签:  NOIP1996
普及+/提高
题目描述
从键盘输入一个字符串(长度<=40个字符),并以字符 '.'结束。

例如:'This is a book.' 现对该字符串进行编辑,编辑功能有:

D:删除一个字符,命令的方式为:

     D a  其中a为被删除的字符

     例如:D s  表示删除字符 's' ,若字符串中有多个 's',则删除第一次出现的。

              如上例中删除的结果为: 'Thi is a book.'

I:插入一个字符,命令的格式为:

    I a1 a2  其中a1表示插入到指定字符前面,a2表示将要插入的字符。

    例如:I s d  表示在指定字符 's' 的前面插入字符 'd' ,若原串中有多个 's' ,则插入在最后一个字符的前面。

             如上例中:
                   原串:'This is a book.'

                   插入后:'This ids a book.'

R:替换一个字符,命令格式为:

     R a1 a2  其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。

     例如: 原串: 'This is a book.'

               输入命令:R o e

               替换后的字符串为:'This is a beek.'

在编辑过程中,若出现被改的字符不存在时,则给出提示信息"Not exist"。


输入描述
每个测试文件只包含一组测试数据,每组输入数据包含两行:

第一行,输入一个字符串,表示原串;

第二行,输入一个字符串,表示命令。


输出描述
对于每组输入数据,输出编辑后的字符串,如果被改的字符不存在,则输出"Not exist"(引号不输出)。

输入输出样例
×💡 样例只是举一个例子,并非全部测试数据,请保证您的程序能满足任意符合题意的数据!
输入1


This is a book.
D s
输出1


Thi is a book.
输入2


This is a book.
I s d
输出2


This ids a book.
输入3


This is a book.
R o e
输出3


This is a beek.

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    char a,b,c;
    getline(cin,s,'.');
    cin>>a;
    s+='.';
    if(a=='D'){
        int p=0;
        cin>>b;
        for(int i=0;i<s.size();i++){
            if(s[i]==b){
                p=i;
                break;
            }
        }
        //cout<<p;
        for(int i=0;i<s.size();i++){
            
            if(s[i]!=b||i!=p){
                //cout<<i;
                cout<<s[i];
            }
                
        }
        //cout<<'.';
        for(int i=0;i<1;i++){
            
        }
    }
    else if(a=='I'){
        int p=0;
        cin>>b>>c;
        for(int i=s.size()-1;i>-1;i--){
            if(s[i]==b){
                p=i;
                break;
            }
        }
        for(int i=0;i<p;i++){
            cout<<s[i];
        }
        cout<<c;
        for(int i=p;i<s.size();i++){
            cout<<s[i];
        }
        //cout<<'.';
    }
    else{
        string s2=s;
        cin>>b>>c;
        for(int i=0;i<s.size();i++){
            if(s[i]==b){
                
                s[i]=c;
            }
        }
        if(s==s2){
        cout<<"Not exist";
    }
    else{
        cout<<s;//<<'.';
    }
    }
    
    return 0;
}//无自动缩进,纯手打,缩进可能有错
#include<iostream>
using namespace std;
main()
{
    int s123[1001];
    bool a[101]={0};
    int n,m,i123,f=0,t=0,s=0,k,cnt=0;;
    int i=0;
    cin>>n>>k>>m;
    t=k-1;
    do
    {
        ++t;//逐个枚举圈中的所有位置
        if(t>n)
            t=1;//数组模拟环状,最后一个与第一个相连
        if(!a[t])
            s++;//第t个位置上有人则报数
        if(s==m)//当前报的数是m
        {
            s=0;//计数器清零
            s123[i]=t;
            //cout<<t<<' ';//输出被杀人编号
            a[t]=1;//此处人已死,设置为空
            f++;//死亡人数+1
        }
        i123++;
    }while(f!=n);//直到所有人都被杀死为止
    cout<<s123[0];
}
2234. 除以13 [ 提交记录 ]
结果评判: 文本对比
正确/提交: 3 / 3
官方标签:  高精度计算
普及/提高-
题目描述
输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。
输入描述
一个大于0的大整数,长度不超过100位。
输出描述
两行,分别为整数除法得到的商和余数。
输入输出样例
×💡 样例只是举一个例子,并非全部测试数据,请保证您的程序能满足任意符合题意的数据!
输入

复制
2132104848488485

输出

复制
164008065268345
0

#include<bits/stdc++.h>
using namespace std;
int divide(int *a,int b,int *c,int *r,int len){
    int lenc=len-1;
    *r=0;
    while(lenc>=0){
        int d=(*r)*10+a[lenc];
        c[lenc]=d/b;
        *r=d%b;
        lenc--;
    }
    for(lenc=len-1;lenc>=0;lenc--){
        if(c[lenc]!=0)break;
    }
    return ++lenc;
}
int main(){
    int defsum=0;
    const int N=100010;
    int a[N],b,c[N],r;
    string def;
    int defi=0;
    memset(a,0,sizeof(a));memset(c,0,sizeof(c));
    string opa;
    cin>>opa;
    b=13;
    int lena=opa.size();;
    for(int i=lena-1;i>=0;i--)a[lena-i-1]=opa[i]-'0';
    int lenc=divide(a,b,c,&r,lena);
    for(int i=lenc-1;i>=0;i--){
        cout<<c[i];
        def+=c[i]+'0';
        //defi++;
    }
    cout<<endl;
    string s=def;
    int n=13;
    for(int i=0;i<lena;i++)a[i]=0;
    int x=0;
    int b1[1005];
    int len=s.size();
    for(int i=0;i<len;i++){
        a[i]=s[len-1-i]-'0';
    }

    for(int i=0;i<len;i++){
        a[i]=(a[i]*n)+x;
        x=a[i]/10;
        
        a[i]%=10;
        if(i==len-1&&x>0){
            len++;
        }
    }
//    int l=lena+lenb;
//    while(c[l-1]==0&&l>1){
//        l--;
//    }
    string str2;
    for(int i=len-1;i>=0;i--){
       //cout<<a[i];
        str2+=a[i]+'0';
    }
    for(int i=0;i<lena;i++){
        a[i]=0;
        
    }
    for(int i=0;i<lenc;i++){
        c[i]=0;
    }
    string s1=opa,s2=str2;
    
    int lena1=s1.size();
    for(int i=0;i<lena1;i++){
        a[i]=s1[lena-i-1]-'0';
    }
    int lenb1=s2.size();
    for(int i=0;i<lenb1;i++){
        b1[i]=s2[lenb1-i-1]-'0';
    }
    int len1=max(lena1,lenb1);
    for(int i=0;i<len1;i++){
        c[i]+=a[i]-b1[i];
        if(c[i]<0){
            c[i+1]--;
            c[i]+=10;
        }
    }
    while(c[len1-1]==0&&len1>1){
        len1--;
    }
    for(int i=len1-1;i>=0;i--){
        cout<<c[i];
    }
    return 0;
}

相关推荐

  1. 21线

    2024-07-15 09:20:03       21 阅读
  2. 22线

    2024-07-15 09:20:03       19 阅读
  3. 笔记1

    2024-07-15 09:20:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 09:20:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 09:20:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 09:20:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 09:20:03       69 阅读

热门阅读

  1. 面向对象编程的6大原则

    2024-07-15 09:20:03       22 阅读
  2. ArduPilot开源代码之AP_AHRS_View

    2024-07-15 09:20:03       20 阅读
  3. B4005 [GESP202406 四级] 黑白方块

    2024-07-15 09:20:03       73 阅读
  4. Unity3D中如何降低游戏的Drawcall详解

    2024-07-15 09:20:03       28 阅读
  5. Apache访问机制配置

    2024-07-15 09:20:03       25 阅读
  6. 比较运算符练习·二

    2024-07-15 09:20:03       16 阅读
  7. 什么是幂等?如何实现幂等?

    2024-07-15 09:20:03       24 阅读
  8. 道路运输企业管理人员安全考核试题(附答案)

    2024-07-15 09:20:03       19 阅读
  9. ASCII七位够用为什么用八位表示?

    2024-07-15 09:20:03       19 阅读