zoukankan      html  css  js  c++  java
  • 集训作业 洛谷P1100 高低位交换

    这个题简单来说就是把一个数转成32位的2进制数,不够的补0。然后把这个数的前半部分和后半部分互换,再计算结果。

    思路简单明了,接下来是代码:

    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<cmath>
    using namespace std;
    long long a,b,shu[50],s=1,zshu;
    int main()
    {
    	scanf("%lld",&a);
    	while(a!=0)//转换进制,会做1143的应该都会
    	{
    		shu[s]=a%2;
    		a/=2;
    		s++;
    	}
    	for(int i=32;i>=s;i--)//如果位数不够是要补0的
    	{
    		shu[i]=0;
    	}
    	for(int i=17;i<=32;i++)//互换了,第17位就是第1位。第1位就是第17位,然后就按照这个样子,转换进制就好啦。
    	{
    		zshu+=shu[i]*pow(2,i-17);
    	}
    	for(int i=1;i<=16;i++)
    	{
    		zshu+=shu[i]*pow(2,i+15); 
    	}
    	printf("%lld",zshu);
    	return 0;
    }
    

    总结:这个题和前两个没啥区别,会字符串和进制转换就可以轻松过掉。

  • 相关阅读:
    CAS配置记录
    线程同步机制
    线程
    异常
    List集合
    数据结构
    泛型+通配符高级使用--受限泛型
    Collection集合+迭代器+foreach循环
    easyui获取日期datebox中的值
    EL表达式与三目运算符
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12853321.html
Copyright © 2011-2022 走看看