NYOJ 46(最小乘法次数)
#include<stdio.h> int My_strtol(int m) { int num[20];int i=0,j,count=0; while(m>0) { num[i++]=m%2; m/=2; } for(j=0;j<i;j++) if(1==num[j]&1) count++; return count; } int My_Count(int m) { int num[20];int i=0; while(m>0) { num[i++]=m%2; m/=2; } return i; } int main() { int m,n,ans1,ans2; scanf("%d",&m); while(m--) { scanf("%d",&n); ans1=My_strtol(n); ans2=My_Count(n); printf("%d\n",ans1+ans2-2); } return 0; }
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.