计算糖果
这道题目标较简单,就是解一个三元一次方程组,同时判断存不存在。
假设 1、A - B = a, 2、B - C = b, 3、A + B = c, 4、B + C = d
1 + 3得 A = (a + c ) / 2,4 - 2 得 C = (d - b ) / 2, 4 + 2 得 B1 = (d + b ) / 2, 3 - 1 得B2 = (c - a) / 2
我们只需要判断B1,与B2是否相等就可以判断是否存在解。
示例代码:
#include <iostream>
using namespace std;
int main(){
int a, b, c, d;
cin >> a >> b >> c >> d;
int A, B1, B2, C;
A = (a + c) / 2;
B1 = (d + b) / 2;
B2 = (c - a) / 2;
C = (d - b) / 2;
//判断是否存在解
if (B1 != B2)
cout << "No" << endl;
else
cout << A << " " << B1 << " " << C << endl;
return 0;
}
进制转换
熟悉二进制转换得一般就比较容易推出任意进制转换,对于十进制数m,进制n,m % n是转换后得最后一个数字或字母,(m / n) % n是倒数第二个数字或字母,以此类推
要注意的就是正负问题和数字字母得取得。
示例代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string s, table = "0123456789ABCDEF"; //table用于进制转换
int m, n;
cin >> m >> n;
bool flag = false;
if (m == 0){
cout << 0 << endl;
return 0;
}
//判断正负
if (m < 0){
m = 0 - m;
flag = true;
}
//进制转换
while (m){
s += table[m % n];
m /= n;
}
if (flag)
s += '-';
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}