首页 > 其他分享 >题解 - 趣味填空

题解 - 趣味填空

时间:2024-12-20 19:01:38浏览次数:5  
标签:输出 int 题解 substr stoll 等式 趣味 填空 492

题目描述

小华的寒假作业上,有这样一个趣味填空题:
给出用等号连接的两个整数,如“1234=492”。当然,现在这个等式是不成立的。
请你在等号左边整数中的某个位置尝试插入一个乘号,看有没有可能让等式成立。以上
面的式子为例,如果写成 1234=492,这样就正确了。
现在请你编写一个程序来解决它。
输入
输入只有那个不成立的等式,且等号两边的整数均不会超过
2000000000。
输出
输出只有一行。如果存在这样的方案,请输出那个正确的式子;如果
不存在解决方案,请输出“Impossible”(引号中的部分)。
样例输入 Copy
1234=492
样例输出 Copy
123
4=492
提示
测试数据保证不会出现多个解决方案

题意

给出一个只包含数字和一个 = 的字符串,在 = 左侧适当位置插入 * 使得等式成立,保证不会出现多种符合要求的方案,要求输出该方案,否则输出“Impossible”

分析

直接枚举 *的位置,然后判断等式是否成立即可

首先通过找到 =所在的位置,

int p = s.find('=');

然后在[1,p)区间上枚举 *的位置i,(表示在i的前面插入 *),

for(int i = 1;i < p;i++) {}

然后通过字符串截取函数截取出三个字符串a,b,c,即a * b 是否 等于 c

string a = s.substr(0,i),b = s.substr(i,p - i),c = s.substr(p + 1,s.size() - p - 1);

之后将字符串转换成整数,判断等号是否成立

if(stoll(a) * stoll(b) == stoll(c)){
    cout << a << '*' << b << '=' << c;
    st = true; 
    break;
}

代码

#include<bits/stdc++.h>
    
using namespace std;
 
string s;
 
int main(){
    ios::sync_with_stdio;
    cin.tie(0),cout.tie(0);
 
    cin >> s;
 
    int p = s.find('=');
    bool st = false;
    for(int i = 1;i < p;i++){
        string a = s.substr(0,i),b = s.substr(i,p - i),c = s.substr(p + 1,s.size() - p - 1);
        if(stoll(a) * stoll(b) == stoll(c)){
            cout << a << '*' << b << '=' << c;
            st = true;
            break;
        }
    }
 
    if(!st) cout << "Impossible";
 
    return 0;
}

标签:输出,int,题解,substr,stoll,等式,趣味,填空,492
From: https://blog.csdn.net/qq_73162098/article/details/144494604

相关文章

  • Codeforces Global Round 28 / cf contest 2048 题解
    比赛链接A.KevinandCombinationLock观察操作难度(个人感觉)★☆☆☆☆注意到两个操作都不改变\(\%33\)的值,因此要求原数\(\%33==0\),显然这是充分的。B.KevinandPermutation观察操作难度(个人感觉)★☆☆☆☆一个点的"势力范围"是以\([p,p+k)\)为右端点的......
  • CF593B Anton and Lines 题解
    Tag:数学题目描述【题面大意】给定\(n\)条形如\(y=k_ix+b_i\)的直线,你需要判断是否存在两条直线\(a,b\),使\(a,b\)的交点\((x_0,y_0)\)满足\(x_1<x_0<x_2\)。【数据规模与约定】\(1\len\le10^5\),\(-10^6\lex_1,x_2,k_i,b_i\le10^6\)。数据保证对于每两条直线......
  • [JOISC2019] 聚会 题解
    随机化好题,但是不会证。考虑把树看成一条链,链的每个点上缀了一棵树。那么先随机出两个点\(x,y\)(实际上随机一个点,另一个点固定似乎更好?),然后对于当前这棵树上的任意点\(z\),都让他进行一次询问,答案为\(o=Q(x,y,z)\)。那么当\(o=z\)时,显然\(z\)在链上,否则\(z\)在\(o\)......
  • 博弈论+ybt题解
    NIM游戏及其证明题目描述即为T1,不多赘述有向图游戏及SG函数而对于由\(n\)个有向图游戏组成的组合游戏,设它们的起点分别为\(S_1,S_2,\ldots,S_n\),则有定理:当且仅当\(\text{SG}(s_1)\oplus\text{SG}(s_2)\oplus\ldots\oplus\text{SG}(s_n)\neq0\)时,这个游戏是先手......
  • (自用)[USACO2023-JAN-Bronze] T1 LEADERS 题解
    题目描述农夫约翰有\(N(2≤N≤10^5)\)头奶牛,每一头奶牛的品种是更赛牛G或荷斯坦牛H中的一种。每一头奶牛都有一个名单,第\(i\)头奶牛的名单上记录了从第\(i\)头奶牛(即自己)到第\(E_i(i≤E_i≤N)\)头奶牛的连续所有奶牛。每一种奶牛都有且仅有一位“领导者”,对于某一头牛......
  • [CF494D] Birthday 题解
    首先\(S(u)\)显然是\(u\)的子树。假如\(u\)是定点,问题转化为区间求平方和,十分简单。于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在\(u\)的位置处理即可。线段树从\(fa\)转移到\(u\)是极度简单的。时间复杂度\(O(n\logn)\)。#include<bits/stdc++.h>......
  • Luogu P10838 『FLA - I』庭中有奇树 题解 [ 绿 ] [ 二分 ] [ 双指针 ] [ 树 ]
    庭中有奇树:很多算法揉在一起的好题。转化题意因为要封锁\(m\)条路径,根据贪心思想,他一定会封锁最短的\(m\)条路径。所以我们能走的最短传送路径就是最短的第\(m+1\)条路径。这应该是本题最关键的一步转化了,几个月前降智了根本没想到这个。做法求第\(m+1\)短的路径,这个......
  • 组合数学+ybt题解
    加法原理乘法原理排列数从\(n\)个数中任取\(m\)个元素的排列的方案数,表示为\(A^m_n=\frac{n!}{(n-m)!}\)\(0!=1\)全排列\(A^n_n\)组合数从\(n\)个元素中取出\(m\)个元素的组合的个数,表示为\(\dbinom{n}{m}=\frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!}\)如何理解呢?......
  • P3316 [SDOI2014] 里面还是外面 题解
    实现有些傻瓜,喜提时空双最劣解。首先要判断一个点是否在多边形内,一个比较好的方法是从这个点向上引一条射线,若和奇数条边相交就在多边形内,否则在多边形外。二维信息,考虑用树套树维护。把多边形的每一条边都扔到它\(x\)坐标范围的线段树节点里,即线段树节点\((l,r)\)里面维护......
  • 洛谷 P11337 「COI 2019」IZLET 题解
    如果每条边连接的两个点颜色都不相同,那么可以使用如下策略确定每个点的颜色:令\(c_{i,j}\)为\(i\)到\(j\)的路径上的颜色数。对于每个点\(u\),以其为根进行一次dfs,往下找直到找到一个和它颜色相同的或者一个叶子就回溯,如果遇到颜色相同的就将它们在并查集上合并。考虑如何......