HDU - 6182 打表

#include
#include
#include
#include
#include
#include
#include
#include
#define N 2018
using namespace std;
string str[105][105];
const int maxn=110;
long long n;
int a[maxn+2];
int tem,cs;
struct tree{
int l,r;
long long pre,add;
}t[4maxn+2];
struct edge{
int v,w;
};
vectorg[200020];
void bulid(int p,int l,int r){
t[p].l=l;t[p].r=r;
if(l==r){
t[p].pre=a[l];
return;
}
int mid=l+r>>1;
bulid(p
2,l,mid);
bulid(p2+1,mid+1,r);
t[p].pre=t[p
2].pre+t[p*2+1].pre;
}

void spread(int p){
if(t[p].add){
t[p2].pre+=t[p].add(t[p2].r-t[p2].l+1);
t[p2+1].pre+=t[p].add(t[p2+1].r-t[p2+1].l+1);
t[p2].add+=t[p].add;
t[p
2+1].add+=t[p].add;
t[p].add=0;
}
}
long long ans=0;
void change(int p,int x,int y,int z){
if(x<=t[p].l && y>=t[p].r){
t[p].pre+=(long long)z*(t[p].r-t[p].l+1);
t[p].add+=z;
return;
}
spread§;
int mid=t[p].l+t[p].r>>1;
if(x<=mid) change(p2,x,y,z);
if(y>mid) change(p
2+1,x,y,z);
t[p].pre=t[p2].pre+t[p2+1].pre;
}

long long ask(int p,int x,int y){
if(x<=t[p].l && y>=t[p].r) return t[p].pre;
spread§;
int mid=t[p].l+t[p].r>>1;
long long ans=0;
if(x<=mid) ans+=ask(p2,x,y);
if(y>mid) ans+=ask(p
2+1,x,y);
return ans;
}
int vis[200020];
long long ksm(long long a,long long b,long long p){
long long ans=1;
while(b){
if(b&1)
ans=(ansa);
a=(a
a);
b=b>>1;
}
return ans;
}
int main(){
while(cin>>n){
for(int i=1;i<=15;i++){
if(ksm(i,i,0x7f7f7f7f)>n){
cout<<i-1<<endl;
break;
}
if(i==15){
cout<<15<<endl;
break;
}
}
}
return 0;
}

输入N, 输出满足k^k <= N 的 k的个数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值