網(wǎng)站建設(shè)內(nèi)容與實現(xiàn)功能微商引流人脈推廣軟件
decription
本題要求實現(xiàn)一種數(shù)字加密方法。首先固定一個加密用正整數(shù) A,對任一正整數(shù) B,將其每 1 位數(shù)字與 A 的對應(yīng)位置上的數(shù)字進(jìn)行以下運(yùn)算:對奇數(shù)位,對應(yīng)位的數(shù)字相加后對 13 取余——這里用 J 代表 10、Q 代表 11、K 代表 12;對偶數(shù)位,用 B 的數(shù)字減去 A 的數(shù)字,若結(jié)果為負(fù)數(shù),則再加 10。這里令個位為第 1 位。
輸入格式:
輸入在一行中依次給出 A 和 B,均為不超過 100 位的正整數(shù),其間以空格分隔。
輸出格式:
在一行中輸出加密后的結(jié)果。
輸入樣例:
1234567 368782971
輸出樣例:
3695Q8118
idea
- 個位為第一位,依次
- 奇數(shù)位=(b[i]+a[i])%13
- 偶數(shù)位=(b[i]-a[i]) > 0 ? (b[i] - a[i]) : (b[i] - a[i] + 10)
- 隱含的細(xì)節(jié)有
- 字符串a(chǎn)和b可能不等長,短的哪個用0補(bǔ)充
- 在補(bǔ)充0的同時,數(shù)組長度改變,需要先記錄數(shù)組長度
solution(失敗版)
最高位為第一位版本
調(diào)著調(diào)著忘了是各位是第一位,很神奇的可以過測試點(diǎn)1, 2,3
#include <stdio.h>
#include <string.h>
int main(){char a[101], b[101], t[101], hash[14] = "0123456789JQK";int result[101], n = 0, len;scanf("%s%s", a, b);len = strlen(a) - strlen(b);if(len > 0){for(int i = strlen(a) - 1; i >= 0; i--){if(i <= (len - 1)) b[i] = '0';else b[i] = b[i - len];}}else if(len < 0){len *= -1;for(int i = strlen(b) - 1; i >= 0; i--){if(i <= (len - 1)) a[i] = '0';else a[i] = a[i - len];}}for(int i = 0; i < strlen(a) || i < strlen(b); i++, n++){if(i % 2 == 0) result[n] = ((a[i] - '0') + (b[i] - '0')) % 13;else{result[n] = (b[i] - '0') - (a[i] - '0');if(result[n] < 0) result[n] += 10;}}for(int i = 0; i < n; i++) printf("%c", hash[result[i]]);return 0;
}
solution
#include <stdio.h>
#include <string.h>
void reverse(char a[]){for(int i = 0; i < strlen(a) / 2; i++){char c = a[i];a[i] = a[strlen(a) - 1 - i];a[strlen(a) - 1 - i] = c;}
}
int main(){char a[101], b[101], hash[14] = "0123456789JQK";int result[101], n = 0;scanf("%s %s", a, b);reverse(a);reverse(b);int la = strlen(a), lb = strlen(b);for(int i = 0; i < la || i < lb; i++, n++){if(i >= la) a[i] = '0';if(i >= lb) b[i] = '0';if(i % 2 == 0) result[n] = ((a[i] - '0') + (b[i] - '0')) % 13;else{result[n] = (b[i] - '0') - (a[i] - '0');if(result[n] < 0) result[n] += 10;}}for(int i = n - 1; i >= 0; i--) printf("%c", hash[result[i]]);return 0;
}
反思
不能坐在書桌前摸魚,明確好題設(shè)及可能的坑想,不能用低效率decode換個把盲點(diǎn)。