洛谷 P1100 高低位交换
程序员文章站
2022-07-12 16:08:29
...
菜鸟生成记(32)
水题一个,但是刷着很爽!
#include<stdio.h>
#include<math.h>
#define ll long long//定价代换ll 代替long long
void sw(int *a,int *b)//自定义数值交换函数
{//在自定义函数中传地址才能交换变量数值;
//传值(副本)不能交换变量数值
int t;
t=*a;
*a=*b;
*b=t;
}
void fun(ll n)
{
int a[32]={0};
ll sum=0;
int x=32;
int k=0;
while(n)//n一直对2取余,进而求出二进制数
{
a[k++]=n%2;
n/=2;
}
for(int i=0;i<32/2;i++)//高位与低位交换(前16位与后16位交换)
{
sw(&a[i],&a[16+i]);//a[i],a[16+i]数值交换
}
for(int j=0,i=0;i<=31;i++,j++)//二进制数转化为十进制数
{//按权展开
sum+=pow(2,j)*a[i];
}
printf("%lld",sum);//输出高低位交换后的数
//sum定义成long long,因为高低交换后数值有可能大于int
}
int main()
{
ll n=1314520;
scanf("%lld",&n);
fun(n);
return 0;
}
上一篇: Spring Boot快速入门
下一篇: Spring Boot【快速入门】