什么样的数据才可以 hack 掉这份代码啊?
  • 板块学术版
  • 楼主ImposterAnYu
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/8/23 11:26
  • 上次更新2023/11/4 09:22:34
查看原帖
什么样的数据才可以 hack 掉这份代码啊?
510555
ImposterAnYu楼主2021/8/23 11:26

RTRTB2141 的数据加强后,我题解的代码只有 9090 分了,改了很久都是 9090

测试点报错表示“读到 1,但希望 0”,可是我不知道什么样的数据会输出 11 啊……

#include<bits/stdc++.h>
using namespace std;
int i,k;
char p[1005],q[1005],r[1005];
char c[20] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int achar(char x[],char y[],char z[]){//查找值最高那一位的值的函数。 
    int pp = strlen(x),qq = strlen(y),rr = strlen(z),m = 0,n,i;
    for(i = 0; i < pp; i++){
        n = int(x[i] - 48);
        m = max(n,m);
    }
    for(i = 0; i < qq; i++){
        n = int(y[i] - 48);
        m = max(n,m);
    }
    for(i = 0; i < rr; i++){
        n = int(z[i] - 48);
        m = max(n,m);
    }//依次查找。 
    return (c[m] - 48);
}
int anyu(char s[],int b){
    int n = strlen(s),x = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j <= 15; j++){//依次枚举。 
            if(s[i] == c[j]){
                x += j * pow(b,n - i - 1);//根据当前位上的数的大小来增加结果的大小。 
                break;
            }
        }
    }
    return x;
}
int main(){
    cin >> p;
    cin >> q;
    cin >> r;
    k = achar(p,q,r);//调用那个函数。
    for(i = max(k + 1,2); i <= 16; i++){//注意这里,i 不能直接从 1 开始! 
        if(anyu(p,i) * anyu(q,i) == anyu(r,i)){
            cout<< i << endl;
            return 0;//符合条件就输出,然后就结束了。 
        }
    }
    cout<< 0 << endl;//无解时输出0. 
    return 0;
}
2021/8/23 11:26
加载中...