首页 > 代码库 > 数一的逆袭
数一的逆袭
数一的逆袭
题目链接:http://acm.xidian.edu.cn/problem.php?id=1029
数学题
2^n的末位是一个以4为周期循环的数列,
求2^n的首位:
设m=2^n,两边取对数得,
logm=nlog2,化简得,
m=10^(nlog2);
设nlog2的整数部分为a,小数部分为b,那么
m=10^a*10^b,
因为10的整数次幂首位是1,即10^a的首位为1,只需看10^b的首位即可,
用pow(10,b)求出首位,注意类型转化时要加上1e-8。
代码如下:
1 #include<stdio.h> 2 #include<math.h> 3 int a[]={2,4,8,6},T,n,s; 4 int main(){ 5 scanf("%d",&T); 6 while(T--){ 7 scanf("%d",&n); 8 s=(int)(pow(10.0,n*log10(2)-(int)(n*log10(2)))+1e-8); 9 printf("%d %d\n",s,a[(n-1)%4]);10 }11 }
数一的逆袭
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。