题目背景
这是一道签到题,别被这个标题吓着……
题目描述
给定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函数完成。
int f = 1, x = 0;char ch; do{ch = getchar();if(ch=='-')f = -1;} while (ch < '0' || ch > '9'); do{ x = x * 10 + ch - '0';ch = getchar();} while (ch >= '0' && ch <= '9'); printf("%d\n", (int)std::pow(n,(double)1/m));
|