随笔 - 150  文章 - 0 评论 - 3 阅读 - 34654
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

题目描述

数一是一个穷屌丝兼程序猿,是社会受剥削的底层人物,但是他有一个梦想,就是博得女神的欢心。这天,数一的女神说:"一直活在二次元的屌丝啊,一直活在二进制的程序猿啊,你们这群二货快告诉我这堆2是怎么回事?"女神已经被2的幂次搞晕过去了,她只是想知道2的n次方的最高位和最低位是多少,你能帮数一逆袭女神吗?

 

输入

第一行首先是一个正整数T(T<=100)
接下来是T行,每行代表一组数据,每组数据仅有一个正整数n(n<=100000)

 

输出

对于每组数据,输出两个整数,以空格分隔,分表表示2^n的最高位和最低位

--正文

   最低位很好求,因为就是1,2,4,8,6,2,4,8,6循环

   最高位的就是想办法将2^n转换为10^m的形式,利用数学知识得到

  2^n = 10^(nlg2) 

  

复制代码
#include <stdio.h>
#include <math.h> 
long long firstDigitOfPowOf2(int n)
{
  double nLog2;
  if (n < 0) return -1;
  if (n == 3) return 8;
  nLog2 = n * log10(2);
  return (long long)pow(10, nLog2 - (int)nLog2);
}
int main(){
    int T,time;
    scanf("%d",&T);
    for (time=1;time<=T;time++){
        int n;
        scanf("%d",&n);
        int h = n % 4;
        int low[6] = {6,2,4,8,6,2};
        int level = (int)(n * log10(2)) + 1;
        if (h == 0) h = 4;
        long long a = firstDigitOfPowOf2(n); 
        printf("%lld %d\n",a,low[h]);
    }
    
    return 0;
} 
复制代码

 

posted on   Crutain  阅读(190)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示