- 问答
- 2016-11-17 17:36:07 @
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
int n,sum=0,m=32;
int a[35]={0};
int main()
{
cin>>n;
while(n>0)
{
if(n<=0)break;
if(n%2==1)
{
a[m]=1;m--;n=(n-1)/2;
}
else
{
m--;n=n/2;
}
}
int c[35]={0};
for(int i=1;i<=16;i++)
{ c[i]=a[i+16];}
for(int i=17;i<=32;i++)
{c[i]=a[i-16];}
for(int i=32;i>0;i--)
{
sum+=c[i]*pow(2,32-i);//乘方函数
}
cout<<sum;
return 0;
}
4 条评论
-
Odin. LV 8 @ 2016-11-17 21:01:43
妹子~
-
2016-11-17 19:27:39@
已经AC了O O
我把您的 int 变量改成了 long long !另外,在 pow() 函数中*很不负责任地*做了一个类型转换。double pow (double base , double exponent); float pow (float base , float exponent); long double pow (long double base, long double exponent); double pow (Type1 base , Type2 exponent); // additional overloads //http://www.cplusplus.com/reference/cmath/pow/?kw=pow
另外 还添加了我的代码风格 感觉好看了不少!
#include<cmath> #include<algorithm> #include<iostream> using namespace std; typedef long long ll; ll n, sum = 0, m = 32; ll a[35] = {0}; int main() { cin>>n; while(n > 0) { if(n <= 0)break; if(n % 2 == 1) { a[m] = 1; m--; n = (n - 1) / 2; } else { m--; n = n / 2; } } int c[35] = {0}; for(int i = 1; i <= 16; i++) c[i] = a[i + 16]; for(int i = 17; i <= 32; i++) c[i] = a[i - 16]; for(int i = 32; i > 0; i--) sum += c[i] * pow(2.0,32-i + 0.0);//乘方函数 cout<<sum; return 0; }
-
2016-11-17 18:54:57@
大**妹子?#滑稽
-
2016-11-17 18:51:05@
但是 这是哪一道题呢0 0?
- 1