6 条题解
-
4
基础版
#include <iostream> using namespace std; int main() { int n, x = 0; cin >> n; while (n % 2 == 0) { n /= 2; x += 1; } cout << x; return 0; }//已AC
加强版
#include <iostream> using namespace std; int n; int f(int x) { if(x % 2 == 0) { return f(x / 2) + 1; } else { return 0; } } int main() { cin >> n; cout << f(n); return 0; }//已AC
大神版
#include <iostream> #include <math.h> using namespace std; int x(int n) { int k = 0, a = 0; int sum = 0; while (n > sum) { sum = pow(2, a); if (n % sum == 0) { k = a; } a += 1; } return k; } int main() { int n; cin >> n; cout << x(n); system("pause"); return 0; }//已AC
三种方法可自选
-
2
代码如下:
基础版
#include <iostream> using namespace std; int main() { int n,c=0;//c是计数器,所以要把它归零 cin >> n;//输入 while (n%2==0)//如果n是双数(双数的特征是它除以2等于0) { n/=2;//如果n是双数,那n就除以2 c+=1;//计数器加1 } cout << c;//输出计数器 return 0;//结束 }
中等版
#include <iostream> using namespace std; int main() { int n,c=0;//c是计数器,所以要把它归零 cin >> n;//输入 for (int i=1;;i++)//如果n是双数(双数的特征是它除以2等于0) { if (n%2==0)//如果n是双数 { n/=2;//那n就除以2 c+=1;//计数器加1 } else//否则(数不是双数就是单数) { break;//结束循环 } } cout << c;//输出计数器 return 0;//结束 }
新手版
#include <iostream> using namespace std; int main() { int n,c=0;//c是计数器,所以要把它归零 cin >> n;//输入 for (int i=1;n%2==0;i++)//如果n是双数(双数的特征是它除以2等于0)(如果n是双数,那么条件满足) { n/=2;//如果n是双数,那n就除以2 c+=1;//计数器加1 } cout << c;//输出计数器 return 0;//结束 }
三种方法,都很简单,都是AC过的。(自选代码)
- 1
信息
- ID
- 244
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 277
- 已通过
- 107
- 上传者