CodeForces
来源:互联网 发布:linux 显示行号的命令 编辑:程序博客网 时间:2024/06/06 03:43
题目链接:http://codeforces.com/problemset/problem/663/A
题目大意:找出1-n的数字把?填起来,使等式成立
解题思路:当加最小,减最大都比n大的话,肯定不存在方案,当加最大,减最小都比n小的话,肯定不存在方案,存在方案的情况下,可以让所有的加都是n,所有的减都是1,如果比n大的话,加的往下减,减的往上加
AC代码:
#include<cstdio>#include<cstring>using namespace std;const int MAXN = 100000;char gt[MAXN];int pt[MAXN];int main(){ int plus = 1, minus = 0, pos=0, n=0; for (char c;(c=getchar())!='\n';) { gt[pos++] = c; if (c == '+') plus++; else if (c == '-') minus++; if(c>='0'&&c<='9') n = c - '0' + 10 * n; } if (n*plus - minus<n || plus - minus*n>n) puts("Impossible"); else { puts("Possible"); int left = n*plus - minus - n; for (int i = 0;i < plus;++i) pt[i] = n; for (int i = 0;i < minus;++i) pt[i + plus] = 1; for (int i = 0;i < plus&&left;++i) { if (left > n - 1) { pt[i] = 1; left -= n - 1; } else { pt[i] = n - left; left = 0; } } for (int i = 0;i < minus&&left;++i) { if (left > n - 1) { pt[plus + i] = n; left -= n - 1; } else { pt[plus + i] = 1 + left; left = 0; } } int i = 1, j = plus; printf("%d", pt[0]); for (int k = 0;k < strlen(gt);++k) { if (gt[k] == '+') printf(" + %d", pt[i++]); else if (gt[k] == '-') printf(" - %d", pt[j++]); else if (gt[k] == '=') printf(" = %d", n); } } return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Ajax原生实现及相关知识讲解
- 趣味数学--用1到9这九个数组成一个四位数乘以一位数等于四位数的等式,每个数只能用一次
- OpenGL无法打开文件“freeglut.lib”错误的解决办法
- heartbeat+nginx
- Codeforces 463D Gargari and Permutations(BFS)
- CodeForces
- java中静态块、main方法、构造块、构造方法的执行顺序复习
- github配置pc与远程ssh
- JUnit4 源码阅读(一)
- 学习日记17
- 饿了么项目---5、vue-resource的使用(版本:1.3.4)
- 死锁的条件
- mybatis多个参数类型不同,sql语句中paramterType怎么写?
- 关于prototype