Logo 快乐的熊果的博客

博客

GESPC++4级编程题题解

2023-09-23 12:36:29 By 快乐的熊果

前言:目前只做了第一题,第二题后面补罢。

第一题:

题目描述(很像#376):

输入一个整数N,在输入N行,每行有一个K(2<=K<=16),还有一个K进制的M(最多只有9位)。要求输出M的十进制。(经过简化,等真题出来再改)

转换进制很简单,如下(照抄#376):比如(10101)2 ,那么它的十进制表示的式子就是 :1X2^4+0X2^3+1X2^2+0X2^1+1X2^0,

根据此思路,我们就可以写出这样的代码(有些思路没有写出,代码里有注释):

#include <bits/stdc++.h>//万能头文件 
using namespace std;
int main(){
    int n;
    cin>>n;
    int k;
    string m;
    for(int i=1;i<=n;i++){
        cin>>k>>m;
        int t=0;//第几位
        int sum=0;//结果
        int t2=0;//因为是字符串,要转成数字
        int t3=0;//临时打工仔
        for(int j=m.size()-1;j>=0;j--){//从后面开始 
            if((int)(m[j]-'0')>=0&&(int)(m[j]-'0')<=9){//如果是数字 
                t2=(int)(m[j]-'0');
            }
            else{//大于十 
                if(m[j]=='A'){
                    t2=10;
                }
                if(m[j]=='B'){
                    t2=11;
                }
                if(m[j]=='C'){
                    t2=12;
                }
                if(m[j]=='D'){
                    t2=13;
                }
                if(m[j]=='E'){
                    t2=14;
                }
                if(m[j]=='F'){//最多只到16进制 
                    t2=15;
                }
            }
            t3=pow(k,t);//pow(n,k)=n的k次方,需要cmath头文件
            sum+=t2*t3;
            t++;
        }
        cout<<sum;//输出结果 
    }
}

测试数据完美通过,可是交上去1分没有,也没有其他错误呀?

想想xushuoxin说的话:十年OI一场空,不开long long 见祖宗。

上面说过,最多有9位数字,如果是16进制那就是16的9次方,最大情况就是15X6的9次方,就是15461882265600。而int只能存放2147483647的数据。远远超过了int的最大范围。

所以要开long long!

不AC代码

#include <bits/stdc++.h>//万能头文件 
using namespace std;
int main(){
    int n;
    cin>>n;
    int k;
    string m;
    for(int i=1;i<=n;i++){
        cin>>k>>m;
        long long t=0;//第几位
        long long sum=0;//结果
        long long t2=0;//因为是字符串,要转成数字
        long long t3=0;//临时打工仔
        for(int j=m.size()-1;j>=0;j--){//从后面开始 
            if((int)(m[j]-'0')>=0&&(int)(m[j]-'0')<=9){//如果是数字 
                t2=(int)(m[j]-'0');
            }
            else{//大于十 
                if(m[j]=='A'){
                    t2=10;
                }
                if(m[j]=='B'){
                    t2=11;
                }
                if(m[j]=='C'){
                    t2=12;
                }
                if(m[j]=='D'){
                    t2=13;
                }
                if(m[j]=='E'){
                    t2=14;
                }
                if(m[j]=='F'){//最多只到16进制 
                    t2=15;
                }
            }
            t3=pow(k,t);//pow(n,k)=n的k次方,需要cmath头文件
            sum+=t2*t3;
            t++;
        }
        cout<<sum;//输出结果 
    }
}

但是为什么交上去还是0分啊!

哦忘记加endl了

真·完结撒花(不喜勿喷)

#include <bits/stdc++.h>//万能头文件 
using namespace std;
int main(){
    int n;
    cin>>n;
    int k;
    string m;
    for(int i=1;i<=n;i++){
        cin>>k>>m;
        long long t=0;//第几位
        long long sum=0;//结果
        long long t2=0;//因为是字符串,要转成数字
        long long t3=0;//临时打工仔
        for(int j=m.size()-1;j>=0;j--){//从后面开始 
            if((int)(m[j]-'0')>=0&&(int)(m[j]-'0')<=9){//如果是数字 
                t2=(int)(m[j]-'0');
            }
            else{//大于十 
                if(m[j]=='A'){
                    t2=10;
                }
                if(m[j]=='B'){
                    t2=11;
                }
                if(m[j]=='C'){
                    t2=12;
                }
                if(m[j]=='D'){
                    t2=13;
                }
                if(m[j]=='E'){
                    t2=14;
                }
                if(m[j]=='F'){//最多只到16进制 
                    t2=15;
                }
            }
            t3=pow(k,t);//pow(n,k)=n的k次方,需要cmath头文件
            sum+=t2*t3;
            t++;
        }
        cout<<sum<<endl;//输出结果 
    }
}

提醒:禁止抄袭(好像网站上还没这题)

我的沙雕头像

2023-07-26 14:56:44 By 快乐的熊果

video.helloworldroom.com/files/user/2023/07-25/14363420cfc7027229.jpeg

推荐歌曲(以后会更新)

2023-07-25 13:56:10 By 快乐的熊果

1.Midnight City(R星的小曲)

2.This Girl(Shot On The Iphone)

3.Unwelcome School(银行不妙曲)

4.Nevada(Minecraft的小曲)

5.Deja Vu(逮虾户)(唱的人是Various Artists)

6.My Happy Song(happy happy happy)

7.Energy Drink(纯音乐,不好描述)

人都去哪啦?

2023-07-06 12:02:56 By 快乐的熊果

是不是暑假出去玩了除了打卡基本不上helloworld网站(反正我是这样)

看2022年提交记录有感

2023-05-14 18:00:02 By 快乐的熊果

7048顺序表元素的删除

以前的我是这样写的

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    } 
    int x;
    cin>>x;
    for(int i=x+1;i<=n;i++){
        a[i-1]=a[i];
    }
    n--;
    for(int i=1;i<=n;i++){
        cout<<a[i]<<' ';
    }
    return 0;
}

麻烦,垃圾!

后面再做这道题

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int x;
    cin>>x;
    for(int i=1;i<x;i++){
        cout<<a[i]<<' ';
    }
    for(int i=x+1;i<=n;i++){
        cout<<a[i]<<' ';
    }
    return 0;
}

简洁,易懂

752是用二分做吗?

2023-05-04 22:36:35 By 快乐的熊果

看标题

#96竟然没人AC过?

2023-04-30 17:20:15 By 快乐的熊果

羻奊褱驛

#1689题目描述有误

2023-04-30 16:52:46 By 快乐的熊果

以下是题目描述的一部分

Ever the maturing businessman, Farmer John realizes that he must manage his time effectively.

注意,是Farmer John

而中文是:作为一名忙碌的商人,约翰知道必须高效地安排他的时间.

是我英语学错了还是我看错了?

我好慌

2023-04-29 18:23:03 By 快乐的熊果

要是今天比赛没扣Rating我让xushuoxin把账号给我

新幻灯片

2023-04-29 14:27:00 By 快乐的熊果
共 27 篇博客