NYOJ 46-最少乘法次数(数论)

原创 2015年07月09日 18:56:09

题目地址: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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

NYOJ 题目536 开心的mdd(矩阵的最大乘法次数模板)

开心的mdd 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 himdd有一天闲着无聊,随手拿了一本书,随手翻到一页,上面描述了一个神奇的...

数论模幂指数乘法

  • 2013年07月10日 10:45
  • 1KB
  • 下载

基于数论变换的大整数乘法的性能测试

看来之前所说的有些错误的地方,这个算法只能处理到800位的乘法。之后做了一个测试,即比较用数论变换方法和用普通方法做大整数乘法的时间消耗。如下图,表示了程序运行所花的时间随着问题规模的增加而增加的曲线...

hdu 1452 Happy 2004(数论(模P乘法逆元+快速幂取模))

2004=2^2*3*167。 f[1]=2^2,f[2]=3,f[3]=167三者两两互质。2004所有因子的情况:(1+2+2^2)*(1+3)*(1+167)。所以2004的因子个数和就是3*2...

浅谈数论(四)扩展欧几里得算法与乘法逆元

扩展欧几里德算法 基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。 证明:设 a>b。   1...
  • keshuqi
  • keshuqi
  • 2016年07月15日 11:28
  • 227

【数论】【矩阵乘法】【NOI2011】兔农

Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题。 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个...
  • Whjpji
  • Whjpji
  • 2012年07月02日 17:42
  • 4534

关于数论乘法逆元及相关知识点

在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下 令k = (a/b)/m(向下取整), x = (a/b)%m; a/b = k*m + x (x a = k*b*m + b*x...
  • yo_bc
  • yo_bc
  • 2017年05月10日 20:57
  • 596

(数论)数位拆解---特殊乘法

数位拆解---特殊乘法 时间限制:1 秒 内存限制:32 兆 题目来源:  2010年清华复试             题目描述: 写个算法,对2个小于1000000000的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NYOJ 46-最少乘法次数(数论)
举报原因:
原因补充:

(最多只允许输入30个字)