2884 字符等式

    xiaoxiao2021-03-25  180

    题目描述 Description

    现在,我们有一个用卡片组成的等式(卡片仅仅是数字和=号) 虽然是等式 但是它却是错误的..... 后来你觉得, 似乎在这个等式左侧的某个地方添上一个加号“+” 就可以使等式成立... 但是,,等到你要将之付诸行动的时候, 你却不懂得怎么做.. 所以你决定求助于万能的计算机...

    输入描述 Input Description

    一行,一个等式 保证每个数字不会超过 maxlongint OR int

    输出描述 Output Description

    一行, 如果可以成功使等式成立, 就输出成立的等式,(如果存在多个等式成立就输出加号‘+’最靠左的一个)       如 输入221=23,则输出2+21=23,而不输出22+1=23

    否则输出"Impossible!"(不含引号)

    样例输入 Sample Input 样例1 11=2 样例2 222=222 样例输出 Sample Output 样例1 1+1=2 样例2 Impossible! 数据范围及提示 Data Size & Hint

    不要想得太复杂,蠢蠢的字符串操作。

    注意请原始输出:如99=018输出9+9=018;像卡片一样哦,喵~

    #include<iostream> #include <cstdio> #include <string.h> using namespace std; int main() { int i,j,k; int t=0; long sum=0; long x=0,y=0; char map[10001]={0}; gets(map); for(i=0;map[i];i++) { if(map[i]=='=') { k=i; t=1;continue; } if(t==1) { sum=sum*10+map[i]-48; } } for(i=0;i<k;i++) { x=x*10+map[i]-48; y=0; for(j=i+1;j<k;j++) { y=y*10+map[j]-48; } if(x+y==sum) break; } if(i==k||x==0 ||y==0) { printf("Impossible!\n"); return 0; } char cc=map[i+1]; map[i+1]=0; printf("%s",map); printf("+%c",cc); puts(map+i+2); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-4975.html

    最新回复(0)