Решить в с++ даны целые положительные числа n и k. найти сумму + + . . + чтобы избежать целочисленного переполнения, вычислять слагаемые этой суммы с вещественной переменной и выводить результат как вещественное число.
#include <iostream> int main() { using namespace std; double N, K; cout << "Enter N: "; cin >> N; cout << "Enter K: "; cin >> K; double S = 0.0; //сумма, которую нужно найти for (int i = 1; i <= N; i++) { double P = 1.0; for (int j = 1; j <= K; j++) //возведение в степень каждого слагаемого P = P * i; S = S + P; } cout << "Answer: " << S << endl; return 0; }
Николаевич-Анатольевич599
20.05.2022
В Бейсике есть встроенная функция ATN - арктангенс, поэтому угол можно в градусах посчитать.
DIM a, b, c, cs, cst, ang, PI INPUT " a = ", a INPUT " b = ", b INPUT " c = ", c PRINT PI = 3.141593 cs = (b * b + c * c - a * a) / (2 * b * c) cst = cs IF cs < 0 THEN cst = SQR(1 - cs * cs) ang = ATN(SQR(1 - cst * cst) / cst) * 360 / (2 * PI) IF cs < 0 THEN ang = ang + 90 PRINT "угол A = ", PRINT USING "###.##"; ang cs = (a * a + c * c - b * b) / (2 * a * c) cst = cs IF cs < 0 THEN cst = SQR(1 - cs * cs) ang = ATN(SQR(1 - cst * cst) / cst) * 360 / (2 * PI) IF cs < 0 THEN ang = ang + 90 PRINT "угол B = ", PRINT USING "###.##"; ang cs = (a * a + b * b - c * c) / (2 * a * b) cst = cs IF cs < 0 THEN cst = SQR(1 - cs * cs) ang = ATN(SQR(1 - cst * cst) / cst) * 360 / (2 * PI) IF cs < 0 THEN ang = ang + 90 PRINT "угол C = ", PRINT USING "###.##"; ang PRINT "Выход - любая клавиша ... " DO LOOP WHILE INKEY$ = ""
Геннадьевна_Петр
20.05.2022
Немного теории. Для того, чтобы избежать переполнения разрядной сетки, значение квадрата натурального числа не должно превышать максимального числа, представимого выбранным типом данных. В языке Паскаль числа типа longint записываются в четырех байтах в дополнительном коде, т.е. максимальное значение числа не может превышать 2³¹-1. Тогда максимальное натуральное число, квадрат которого мы можем вычислить, равно целой части от величины:
//PascalABC.Net 3.0, сборка 1066 var s:string; i,n,lim,l:longint; begin lim:=Trunc(exp(15.5*ln(2))); Write('Введите номер позиции: '); Read(n); i:=0; l:=0; while (l<n) and (i<=lim) do begin Inc(i); Str(i*i,s); l:=l+Length(s); end; if i<=lim then Writeln('Искомая цифра- ',s[Length(s)-l+n]) else Writeln('Решения в типе данных longint невозможно') end.
Тестовое решение: Введите номер позиции: 4 Искомая цифра- 1
int main()
{
using namespace std;
double N, K;
cout << "Enter N: ";
cin >> N;
cout << "Enter K: ";
cin >> K;
double S = 0.0; //сумма, которую нужно найти
for (int i = 1; i <= N; i++)
{
double P = 1.0;
for (int j = 1; j <= K; j++) //возведение в степень каждого слагаемого
P = P * i;
S = S + P;
}
cout << "Answer: " << S << endl;
return 0;
}