華中科学技術大学の再試験パリティ検査
タイトルの説明
文字列を入力し、各文字に対して奇抜な検証を行い、最後に検証後のバイナリ数(例えば‘3’、出力:10110011)を出力します.
説明の入力
入力には、100を超えない文字列が含まれます.
出力の説明
テストデータのセットが複数ある可能性があります.各グループのデータに対して、文字列の各文字に対して、テーマごとにパリティを行った数を出力し、各文字の検証の結果が1行を占めます.
例
入力
しゅつりょく
原題リンク
まとめ
簡単です.3歩に分けて行きます.一、文字のASCIIコードに対応するバイナリ数を求める.二、統計8ビットバイナリの「1」の個数は、奇数個であれば構わない.偶数であれば、バイナリの最高位を「1」に変更します.三、出力バイナリ;ポイントはどのようにx進法を得るかです:転がり相除法.
Code
文字列を入力し、各文字に対して奇抜な検証を行い、最後に検証後のバイナリ数(例えば‘3’、出力:10110011)を出力します.
説明の入力
入力には、100を超えない文字列が含まれます.
出力の説明
テストデータのセットが複数ある可能性があります.各グループのデータに対して、文字列の各文字に対して、テーマごとにパリティを行った数を出力し、各文字の検証の結果が1行を占めます.
例
入力
3
3a
しゅつりょく
10110011
10110011
01100001
原題リンク
まとめ
簡単です.3歩に分けて行きます.一、文字のASCIIコードに対応するバイナリ数を求める.二、統計8ビットバイナリの「1」の個数は、奇数個であれば構わない.偶数であれば、バイナリの最高位を「1」に変更します.三、出力バイナリ;ポイントはどのようにx進法を得るかです:転がり相除法.
Code
#include
#include
#include
using namespace std;
void turnToBinary(char a, char str_end[])
{
int value = (int)a;
for (int i = 7; i >= 0; i--)
{
str_end[i] = char(value % 2 + '0');
value = value / 2;
}
}
void securitySingle(char str[])// ‘1’
{
int count = 0;
for (int i = 0; i < 8;i++)
{
if (str[i] == '1')
count++;
}
if (count % 2 == 0)
{
if (str[0] == '0')
str[0] = '1';
}
}
int main()
{
string str;
char str_end[9]="00000000";//str_end
while (cin >> str)
{
for (int i = 0; i < str.length(); i++)
{
turnToBinary(str[i], str_end);
securitySingle(str_end);
puts(str_end);
}
}
return 0;
}