UVa 11398 The Base-1 Number System
解題一:使用bitset,注意! '#'不代表此筆資料結束,需先有空白加上單獨的 '#'
code:
code:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<map>
#include<vector>
#include<bitset>
using namespace std;
typedef pair<char,int> ci;
int main()
{
string input="";
string flag="1",ans="";
while(cin>>input && input[0]!='~')
{
int len=input.size();
if(input[0]=='#')
{
bitset<32> bb(ans);
cout<<bb.to_ulong()<<endl;
flag="1",ans="";
}
else if(len==1) flag="1";
else if(len==2) flag="0";
else for(int j=0; j<len-2; j++) ans+=flag;
}
return 0;
}
解題二:直接算二進位(參考http://knightzone.org/?p=1909)
code:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
string baseone_num_part;
string basetwo_num = "";
int num;
char flag;
while( cin >> baseone_num_part && baseone_num_part != "~")
{
if( baseone_num_part == "#" )
{
num = 0;
for( int i = 0 ; i < basetwo_num.length() ; i++ )
{
if( i ) num *= 2;
if( basetwo_num[i] == '1' ) num += 1;
}
basetwo_num = "";
cout<<"aa"<<endl;
printf( "%d\n", num );
}
else if( baseone_num_part.length() == 1 )
flag = '1';
else if( baseone_num_part.length() == 2 )
flag = '0';
else
for( int i = 0 ; i < baseone_num_part.length()-2 ; i++ )
basetwo_num += flag;
}
return 0;
}
留言
張貼留言