P7226 [COCI 2015/2016 #3] POT

记录4

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n,m,sum=0;
	cin>>n;
	while(n--){
		cin>>m;
		int t=m%10;
		m/=10;
		sum+=pow(m,t);
	}
	cout<<sum;
    return 0;
}

突破点

原来的 X 为 21²+125³,但现在变成了 212+1253

虽然题目前面的公式花里胡哨一大堆,但是这个例子就解释了题目意思

思路

数位分离,得到原本的数字,然后累加

代码简析

while(n--){
		cin>>m;
		int t=m%10;
		m/=10;
		sum+=pow(m,t);
	}

%10是取出数字尾巴的数,/10是砍去尾巴的数字

while(n--)来进行循环输入,比for循环的优势在于少些点代码,更简便

n--等价于使用n;   n=n-1;这两条语句,先用后加

补充:++i等价于i=i+1;  使用i;   先加后用

注意点:

  1. pow 的返回值类型

    • pow 的返回值类型是 double

    • 例如,pow(2, 3) 返回 8.0,而不是 8

  2. 隐式类型转换

    • 当将 double 类型的结果赋值给 int 类型的变量时,double 类型的结果会被截断为整数类型。

    • 例如上面的题解,sum += pow(m, t); 中,pow(m, t) 返回一个 double 类型的值,但 sumint 类型,因此 double 类型的值会被截断为整数。

在C/C++中,pow函数位于math.hcmath头文件中。函数原型为:
double pow(double x, double y);

pow(x, y):计算x的y次方。

  • 如果指数为小数,pow会进行开方运算,例如pow(9, 0.5)返回3.0(平方根)。

  • 当底数为负数且指数为小数时,结果可能为NaN(非数字),例如pow(-2, 0.5)

  • 大数运算可能导致溢出,需注意数值范围。

补充

在C++中,powsqrt 是标准库 <cmath> 中提供的数学函数,分别用于计算幂和平方根。以下是一些详细的用法和示例,帮助你更好地理解这两个函数。

1. pow 函数

pow 函数用于计算一个数的幂。其原型如下:

double pow(double base, double exponent);
  • base:底数。

  • exponent:指数。

  • 返回值:返回 baseexponent 次幂的结果。

示例1:计算平方

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double base = 2.0;
    double exponent = 2.0;
    double result = pow(base, exponent);
    cout << base << " to the power of " << exponent << " is " << result << endl; // 输出:2 to the power of 2 is 4
    return 0;
}
示例2:计算立方

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double base = 3.0;
    double exponent = 3.0;
    double result = pow(base, exponent);
    cout << base << " to the power of " << exponent << " is " << result << endl; // 输出:3 to the power of 3 is 27
    return 0;
}
示例3:计算分数次幂

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double base = 8.0;
    double exponent = 1.0 / 3.0;
    double result = pow(base, exponent);
    cout << base << " to the power of " << exponent << " is " << result << endl; // 输出:8 to the power of 0.333333 is 2
    return 0;
}

2. sqrt 函数

sqrt 函数用于计算一个数的平方根。其原型如下:

double sqrt(double x);
  • x:需要计算平方根的数。

  • 返回值:返回 x 的平方根。

示例1:计算平方根

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double number = 16.0;
    double result = sqrt(number);
    cout << "The square root of " << number << " is " << result << endl; // 输出:The square root of 16 is 4
    return 0;
}
示例2:计算非完全平方数的平方根

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double number = 20.0;
    double result = sqrt(number);
    cout << "The square root of " << number << " is " << result << endl; // 输出:The square root of 20 is 4.47214
    return 0;
}
示例3:计算负数的平方根(会返回NaN)

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double number = -4.0;
    double result = sqrt(number);
    cout << "The square root of " << number << " is " << result << endl; // 输出:The square root of -4 is nan
    return 0;
}

注意事项

  1. 包含头文件

    • 确保包含 <cmath> 头文件,因为 powsqrt 函数定义在这个头文件中。

  2. 类型匹配

    • powsqrt 函数的参数和返回值都是 double 类型。如果需要处理整数,可以显式转换为 double

  3. 负数的平方根

    • sqrt 函数不支持负数的平方根,会返回 NaN(Not a Number)。

总结

powsqrt 是C++标准库中非常有用的数学函数,分别用于计算幂和平方根。通过这些示例,应该能够更好地理解和使用这两个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值