国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

gdufe acm 1206 lowbit

2019-11-14 12:35:46
字體:
來源:轉載
供稿:網友

鏈接: http://acm.gdufe.edu.cn/PRoblem/read/id/1206

Problem Description:

long long ans = 0; for(int i = 1; i < = n; i ++) ans += lowbit(i) lowbit(i)的意思是將i轉化成二進制數之后,只保留最低位的1及其后面的0,截斷前面的內容,然后再轉成10進制數 比如lowbit(7),7的二進制位是111,lowbit(7) = 1 6 = 110(2),lowbit(6) = 2,同理lowbit(4) = 4,lowbit(12) = 4,lowbit(2) = 2,lowbit(8) = 8

每輸入一個n,求ans Input:

多組數據,每組數據一個n(1 <= n <= 5*10^8)

Output:

每組數據輸出一行,對應的ans Sample Input:

1 2 3 Sample Output:

1 3 4

首先, lowbit (i) = i&-i for(int i = 1; i < 100; i++) printf(“%d/n”, lowbit(i) ); 觀察其規律,可以發現: i為 1,3,5,7,9…時,lowbit(i) == 1, i為 2,6,10,14,18…時,lowbit(i) == 2, i為 4,12,20,28,36…時,lowbit(i) == 4, i為 8,24,40,56,72…時,lowbit(i) == 8…

代碼:

#include <stdio.h>#include <math.h>int main(){ int n; while(scanf("%d", &n) == 1){ int p = (int)log2(n); long long ans = 0; for(int i = 0; i <= p; i++){ ans += ((n - (1 << i)) / (1 << (i+1)) + 1) * (1 << i);//懶得描述。。。反正根據規律可以推出來 } printf("%lld/n", ans); } return 0;}//需要注意:<<的優先級比-低
上一篇:1004.Counting Leaves (30)

下一篇:3.8 平均數

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 四子王旗| 禄劝| 云梦县| 小金县| 元氏县| 许昌县| 闻喜县| 神木县| 威海市| 恭城| 巩义市| 三都| 无为县| 乌拉特后旗| 瑞金市| 楚雄市| 永登县| 双鸭山市| 昌图县| 永吉县| 桓仁| 杭锦后旗| 清水县| 隆德县| 平阳县| 安阳县| 马尔康县| 高陵县| 鄂伦春自治旗| 茌平县| 东至县| 余庆县| 梅州市| 云龙县| 逊克县| 惠州市| 新巴尔虎左旗| 平度市| 中西区| 葵青区| 台北市|