首页 > 代码库 > pow的小事不简单
pow的小事不简单
http://acm.hdu.edu.cn/showproblem.php?pid=5878
#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<math.h>using namespace std;long long int ll=1e9;long long int ss[500005];/*long long int pow(long long int a, long long int b) { long long int ans = 1; while(b) { if(b & 1)ans *= a; a *= a; b>>=1; } return ans; }*/ ///不定义上面这个函数的话答案就是错误的因为对于pow在文件中定义的函数的返回值类型是double,而本题仅仅要求返回long long类型的值,若是直接用文件中自定义的pow函数就会因为精度的差异而造成错误int main(){ int t; long long int ch; cin>>t; while(t--){ int p=0; int n; for(long long int i=0;i<31;i++) for(long long int j=0;j<20;j++) for(long long int k=0;k<14;k++) for(long long int l=0;l<12;l++){ ch=pow(2,i)*pow(3,j); if(ch>ll)break; ch*=pow(5,k); if(ch>ll)break; ch*=pow(7,l); if(ch>ll)break; ss[p++]=ch; } sort(ss,ss+p); cin>>n; int l=0; int r=p-1; while(l<r){ int mid=l+(r-l)/2; if(ss[mid]>=n){ r=mid; } else l=mid+1; } cout<<ss[l]<<endl; }}
pow的小事不简单
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。