题解:P14605 [NWRRC 2025] Faulty Fraction

· · 题解

题解:P14605 [NWRRC 2025] Faulty Fraction

题目大概:

给你两个字符串 sc,将字符串 s 分为两节 ab,使得 a \div b = c

做法:

len(x) 表示数字 x 的长度。\ 例:len(121) = 3len(114514) = 6。\ 根据我们小学知识,不难推出 len(a) = len(b) + len(c)(最高位有进位) 或 len(a) = len(b) + len(c) - 1 (最高位无进位)。\ 因为 len(a) + len(b) =len(s),所以我们可以枚举 len(a),得到 len(b),如果满足上述式子任意一个,输出 ab 即可。

CODE:

#include<bits/stdc++.h>
using namespace std;
string s,c;
int len_s,len_a,len_b,len_c;
int main(){
    cin>>s>>c;
    len_s=s.size();
    len_c=c.size();
    for(int i=1;i<=len_s;i++){
        len_a=i;
        len_b=len_s-i;
        if((len_a==len_b+len_c-1)||(len_a==len_b+len_c)){
            cout<<s.substr(0,len_a)<<" "<<s.substr(len_a,len_b);
            break;
        }
    }
    return 0;
}