NYOJ 46-最少乘法次数(数论)
2024-10-13 13:19:26
题目地址: pid=46">NYOJ 46
思路:能够化成二进制来求解。结果是最高位的位数-1+最高位后面1的个数。比如:对于3。它的二进制代码为11,就是用这个最高位(2-1)加上后面的1的个数(1个)。
用最高位1的目的是他能代表了转化的次数,由于2+2=4,4+4=8 8+8=16........
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=21010;
char str[110];
int main()
{
int T,n,i,j;
int cnt;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
memset(str,0,sizeof(str));
i=0;
while(n/2!=0){
str[i++]='0'+n%2;
n=n/2;
}
str[i]='1';
cnt=0;
for(j=0;j<i;j++){
if(str[j]=='1')
cnt++;
}
printf("%d\n",strlen(str)-1+cnt);
}
return 0;
}
最新文章
- Linux(Ubuntu) Mysql的安装配置例子以及常用命令
- Python-06-面向对象(基础篇)
- Android开发自学笔记(Android Studio)&mdash;4.5 ProgressBar及其子类
- 数据转换成json传递
- ImageMagick又一处命令执行
- SVO实时全局光照:中等规模场景的GI实现
- Ultra-QuickSort 分类: POJ 排序 2015-08-03 15:39 2人阅读 评论(0) 收藏
- ASP.NET MVC SignalR
- Android组件的通讯——Intent
- mac10.7安装xcode3.2.5和xcode4.2过程和方法
- 武汉科技大学ACM :1002: 零起点学算法38——求阶乘和
- Oracle EBS-SQL (SYS-11):查询系统已打的PATCH.sql
- vue + socket.io实现一个简易聊天室
- dataTables 使用整理
- C++开发python windows版本的扩展模块示例
- Config安全控制
- 让PC端页面在手机端显示缩小版的解决方法
- 【SSL】OV、DV和EV证书的区别
- nginx接入let&#39;s encrypt
- update-rc.d使用