“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情”
KY15 abc
描述
设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
输入描述:
题目没有任何输入。
输出描述:
请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。 每个输出占一行。
#include <stdio.h>
int main() {
int x, y;
for (int a = 0; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
x = a * 100 + b * 10 + c;
y = b * 100 + c * 10 + c;
if (x+y == 532) {
printf("%d %d %d\n",a, b, c);
}
}
}
}
return 0;
}
暴力枚举,三重循环,性能低了些
KY45 skew数
描述
在 skew binary 表示中,第 k 位的值 x[k] 表示 x[k]×(2^(k+1)-1)。每个位上的可能数字是 0 或 1,最后面一个非零位可以是 2,例如,10120(skew) = 1×(2^5-1) + 0×(2^4-1) + 1×(2^3-1) + 2×(2^2-1) + 0×(2^1-1) = 31 + 0 + 7 + 6 + 0 = 44。前十个 skew 数是 0、1、2、10、11、12、20、100、101、以及 102。
输入描述:
输入包括多组数据,每组数据包含一个 skew 数。
输出描述:
对应每一组数据,输出相应的十进制形式。结果不超过 2^31-1。
案例
输入:
10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
输出:
44
2147483646
3
2147483647
4
7
1041110737
#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 50
int main() {
char x[N];
int len, i;
int b;
int skewX;
while (scanf("%s", x) != EOF) { //用字符串数组读入长数据
len = strlen(x);
skewX = 0;
for (i = 0; i < len; i++) {
b = x[i] - '0'; //提取每一位数字:ASCII码差值
skewX += (pow(2, len - i) - 1) * b;
}
printf("%d\n", skewX);
}
return 0;
}