在其它數都出現k次的陣列中找到只出現一次的數
在其它數都出現k次的陣列中找到只出現一次的數
題目描述
給定一個整型陣列arr和一個大於1的整數k。已知arr中只有1個數出現了一次,其他的數出現k次,請返回出現了1次的數。
輸入描述:
輸入包含兩行,第一行包含兩個整數n和k, 1 < = n < = 1 0 5 , 1 < k < = 100 1<=n<=10^5, 1 < k <= 100 1<=n<=105,1<k<=100,n代表陣列arr的長度,第二行n個整數,代表陣列arr,陣列arr中每個數都是32位整數。
輸出描述:
輸出一個整數,代表唯一出現1次的數。
示例1
輸入
7 3
5 4 1 1 5 1 5
輸出
4
題解:
如果 k 個相同的 k 進位制數無進位相加,相加的結果一定是每一位上都為 0 的 k 進位制數。於是我們可以直接將每個元素的 k 進位制中的每一位進行無進位相加,最終的結果就是出現一次的元素。
程式碼:
#include <cstdio>
using namespace std;
int n, k;
int bit[32];
int main(void) {
scanf("%d%d", &n, &k);
int val, idx;
int up = 0;
while ( n-- ) {
scanf("%d", &val);
idx = 0;
while ( val ) {
bit[ idx ] += val % k;
bit[ idx ] %= k;
val /= k;
++idx;
}
if ( idx > up ) up = idx;
}
int ret = 0;
for ( int i = up - 1; i >= 0; --i )
ret = ret * k + bit[ i ];
return 0 * printf( "%d\n", ret );
}
相關文章
- 找出陣列中只出現一次的數字陣列
- JZ-040-陣列中只出現一次的數字陣列
- 劍指offer 陣列中只出現一次的數字陣列
- 《劍指offer》:[40]陣列中只出現一次的數字陣列
- 【劍指offer】陣列中只出現一次的數字(1)陣列
- 【劍指offer】陣列中只出現一次的數字(2)陣列
- 只出現一次的數字 II
- 找出陣列中第 k 大的數字及其出現次數陣列
- 136. 只出現一次的數字
- LeetCode 只出現一次的數字LeetCode
- 陣列中每個陣列元素出現的次數陣列
- LeetCode 只出現一次的數字IILeetCode
- LeetCode 只出現一次的數字IIILeetCode
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 陣列中出現兩次的數陣列
- LeetCode之只出現一次的數字-SwiftLeetCodeSwift
- LeetCode136 只出現一次的數字LeetCode
- 【劍指offer】數字在排序陣列中出現的次數排序陣列
- 九度 1349 數字在排序陣列中出現的次數排序陣列
- 統計陣列中各數字(元素)出現的次數陣列
- 計算陣列中每個數字出現的次數陣列
- Single Number 陣列中除了某個元素出現一次,其他都出現兩次,找出這個元素陣列
- JZ-037-數字在排序陣列中出現的次數排序陣列
- 《劍指offer》:[38]數字在排序陣列中出現的次數排序陣列
- leetcode136. 只出現一次數字LeetCode
- Matlab tabulate統計數字出現的次數,如果陣列中出現0Matlab陣列
- leetcode力扣136.只出現一次的數字LeetCode力扣
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 第一次只出現一次的字元字元
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 統計陣列中各元素出現次數陣列
- 找到陣列中出現特定次數數字的問題陣列
- 統計陣列元素中每個元素出現的次數陣列
- LeetCode每日一題:只出現一次的數字(No.136)LeetCode每日一題
- 陣列中出現次數超過一半的數字陣列
- js常見演算法(一):陣列去重,打亂陣列,統計陣列各個元素出現的次數, 字串各個字元的出現次數,獲取地址連結的各個引數JS演算法陣列字串字元