《怪物獵人物語2破滅之翼》戰鬥系統介紹及攻略
阿新 • • 發佈:2021-07-14
問題描述:
對於長度為5位的01串,每一位都可能是9或1,一共有32種可能。它們前幾個是:
00000
00001
00010
00100
請按從小到大的順序寫出這幾種01串。
輸出格式:
輸出32行,按從小到大的順序每一行一個長度為5的01串
解題思路
-
0~32轉成二進位制輸出即得該題所求
-
輸出32行,最後一行應該輸出31的5位二進位制: 1 1111 ,對應2^4 = 16 , 2^3 = 8 , 2^2 = 4 , 2^1 = 2 , 2^0 = 1
-
31 % 32 /16= 1; 31 % 16 / 8= 1; 31 % 8 / 4 = 1; 31 % 4 / 2 = 1; 31% 2 = 1
方法一
程式碼實現
暴力輸出
#include<iostream> using namespace std; int main() { for(int i = 0;i < 32; i++) { cout<<i % 32 / 16<<i % 16 / 8<<i % 8 / 4<<i % 4 / 2<<i % 2<<endl; } return 0; }
方法二:
31 % 2 = 1 , 31 / 2 = 15 15 % 2 = 1 , 15 / 2 = 7 7 % 2 = 1 , 7 / 2 = 3 3 % 2 = 1 , 1 / 2 = 0
#include<iostream>
using namespace std;
int main()
{
for(int i = 0;i < 32;i++)
{
int a[5]={0}; //i = 0 時;輸出 0 0000
int n = i;
int num = 4;
while(n >= 1)
{
a[num--] = n % 2;
n /= 2;
}
for(int j = 0;j < 5;j++)
{
cout<<a[j]; //遍歷輸出
}
cout<<endl;
}
}