分享

Luogu P6685 可持久化动态仙人掌的直径问题

 昵称71011036 2020-08-10

题目背景

这是一道签到题,别被这个标题吓着……

题目描述

给定n,mn,m,求有多少个正整数xx,使得xm≤nxm≤n 。

输入格式

一行两个正整数n,mn,m 。

输出格式

一个整数表示正整数xx的个数。

思路

1.数学方法

由于题目要求xm≤nxm≤n,我们把这个式子的两边分别开mm次方,得到x≤n−−√mx≤nm 。

这里需要一个概念,就是关于一个整数的分数次方的计算方法,即amn=am−−−√namn=amn 。

该条结论可用于此题,即n−−√m=n1mnm=n1m 。所以此题只要输出n1mn1m即可。这个任务可以用cmathcmath库中的powpow函数完成。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cmath>
  6. int n, m;
  7. inline int read(void){
  8. int f = 1, x = 0;char ch;
  9. do{ch = getchar();if(ch=='-')f = -1;} while (ch < '0' || ch > '9');
  10. do{ x = x * 10 + ch - '0';ch = getchar();} while (ch >= '0' && ch <= '9');
  11. return f * x;
  12. }
  13. int main(){
  14. n = read(), m = read();
  15. printf("%d\n", (int)std::pow(n,(double)1/m));
  16. return 0;
  17. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多