第一章:位運算-------出現k次與出現1次
第一章:位運算-------出現k次與出現1次
問題:
陣列中只有一個數出現了一次,其他的數都出現了k次,請輸出只出現1次的數。
知識點:
2個相同的2進位制數,做不進位加法,結果為0;
10個相同的10進位制數,做不進位加法,結果為0;
k個相同的k進位制數,做不進位加法,結果為0;
思路:
將這些數,全部轉換為k進位制數,然後做不進位加,最後將結果轉換為十進位制數。
#include<iostream>
#include<algorithm>
//#include<cmath>
using namespace std;
//十進位制數轉K進位制
string decTok(int dec,int k){
string ret=""; //作為結果
while(dec>0){
ret+=char(dec%k+'0'); //如:5+'0'='5'
dec/=k;
}
reverse(ret.begin(),ret.end());
return ret;
}
//K進位制轉十進位制
int kTodec(string str,int k){
int ans=0;
for(int i=0;i<str.size();i++){
ans=ans*k+(str[i]-'0'); //020 首位是最高位
//ans+=(str[i]-'0')*pow(k,str.size()-1-i);
}
return ans;
}
int main(){
int n[]={1,1,1,3,3,3,5,5,5,9,9,9,6,7,7,7};
int k=3;
string str[16];
for(int i=0;i<16;i++){
str[i]=decTok(n[i],k);
}
//找出16條字串中最大長度
int maxlen=0;
int len;
for(int i=0;i<16;i++){
len=str[i].size();
maxlen=max(maxlen,len); //不能用: maxlen=max(maxlen,str[i].size())
}
//16條字串中,若字串長度<maxlen,則進行補齊,以便逐位做不進位加
for(int i=0;i<16;i++){
while(str[i].size()<maxlen){
str[i]="0"+str[i];
}
}
//ans:結果。初始化
string ans="";
while(ans.size()<maxlen){
ans+="0";
}
//16條字串做不進位加
for(int i=0;i<16;i++){
for(int j=0;j<maxlen;j++){
ans[j]=char(((str[i][j]-'0')+(ans[j]-'0'))%k+'0');
}
}
cout<<ans<<endl;
//ans字串結果轉為10進位制數
int finalans=kTodec(ans,k);
cout<<finalans<<endl;
return 0;
}
結果:
相關文章
- 出現k次與出現1次《演算法很美》演算法
- 位運算與SQL實現SQL
- Dictionary計算字元出現的次數字元
- 第一章:位運算-------輸入浮點數,輸出對應二進位制數
- 位運算實現加減乘除
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- mysql 計算 一個文字欄位的內容一個文字出現的次數MySql
- 位運算實現整數與位元組陣列轉換陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- 二進位制數的運算原理與閘電路實現
- 獨一無二的出現次數
- 統計字串出現的次數(C)字串
- JavaScript統計字元出現的次數JavaScript字元
- 二進位制、位運算、位移運算
- 多行文字溢位時出現省略號
- 位運算
- 集合-運算實現
- 只出現一次的數字 II
- 136只出現一次的數字
- LeetCode 只出現一次的數字LeetCode
- matlab——統計相同元素出現的次數Matlab
- 二進位制與二進位制運算
- 2351. 第一次出現兩次的字母
- 第一次只出現一次的字元字元
- 位運算的操作與演算法演算法
- android位運算講解與實戰Android
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 1207. 獨一無二的出現次數
- 136. 只出現一次的數字
- LC-出現一次的數字II
- 只出現一次的數字--力扣力扣
- leetcode136. 只出現一次數字LeetCode
- LeetCode 只出現一次的數字IIILeetCode
- LeetCode 只出現一次的數字IILeetCode
- 位運算 --20240310
- 理解位運算
- 深入淺出PyTorch(運算元篇)PyTorch
- 使用位運算進行加法運算