UVa 377 - Cowculations

来源:互联网 发布:用java平衡服务器负载 编辑:程序博客网 时间:2024/06/07 08:17

題目:已知一個字符串的運算規則,每次有四種操,輸入兩個串和三個運算,求左後的結果和給定結果是否相同。

分析:觀察發現是四進制運算,加法、左移位、右移位;

            因為和二進制相同直接按二進制計算即可;這裡移位的時候每次移動兩位即可。

說明:╮(╯▽╰)╭,上個月沒怎麼做題。

#include <cstdlib>#include <cstring>#include <cstdio>char number1[22];char number2[22];char number3[22];char operators[3];int char2int(char str[]){int ans = 0;for (int i = 0; str[i]; ++ i) {switch (str[i]) {case 'V':ans = ans*4 + 0;break;case 'U':ans = ans*4 + 1;break;case 'C':ans = ans*4 + 2;break;case 'D':ans = ans*4 + 3;break;default :break;}}return ans;}int main(){int  T, value1, value2;while (~scanf("%d",&T)) {puts("COWCULATIONS OUTPUT");while (T --) {scanf("%s%s",number1,number2);value1 = char2int(number1);value2 = char2int(number2);for (int i = 0; i < 3; ++ i) {scanf("%s",operators);switch(operators[0]) {case 'A': value2 = value2 + value1; break;case 'R': value2 = value2>>2; break;case 'L': value2 = value2<<2; break;default : break;}}scanf("%s",number3);if (value2 == char2int(number3)) {puts("YES");}else {puts("NO");}}puts("END OF OUTPUT");}return 0;}


0 0
原创粉丝点击