Программа выдаёт неверный ответ - C (СИ)
Формулировка задачи:
Помогите подправить программу, пожалуйста:
Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2, 3, 4.
Выдаёт числа 18, 27, 36,45,54,81,90, 99, вместо 18, 45,90,99.
Где неверно, подскажите?
#include "stdafx.h" #include "stdio.h" int calc_sum(int num) { int s=0; do {s+=num%10; num/=10; } while (num); return s; } void main() { for (int i=10; i<100; ++i) { int s=calc_sum(i); if (s==calc_sum(i*2) && s==calc_sum(i*3) && s==calc_sum(i*4)) printf("%d\n", i); } }
Решение задачи: «Программа выдаёт неверный ответ»
textual
Листинг программы
//Найти все двузначные числа, сумма цифр которых //не меняется при умножении числа на 2, 3, 4 #include<iostream> using namespace std; int main(void) {setlocale(LC_ALL, "Russian"); for(int i=10;i<100;i++) {int a1=i; int a2=a1%10; int a3=a1/10; int a4=a3%10; int a5=a3/10; int a6=a5%10; int sum=a2+a4+a6; int b1=i*2; int b2=b1%10; int b3=b1/10; int b4=b3%10; int b5=b3/10; int b6=b5%10; int sum1=b2+b4+b6; int c1=i*3; int c2=c1%10; int c3=c1/10; int c4=c3%10; int c5=c3/10; int c6=c5%10; int sum2=c2+c4+c6; int d1=i*4; int d2=d1%10; int d3=d1/10; int d4=d3%10; int d5=d3/10; int d6=d5%10; int sum3=d2+d4+d6; if(sum==sum1&&sum==sum2&&sum==sum3) cout<<i<<endl; } return 0;}
Объяснение кода листинга программы
- В коде используется цикл for для перебора всех чисел от 10 до 99.
- Для каждого числа выполняется ряд операций для вычисления суммы цифр числа и для умножения числа на 2, 3 и 4.
- Вычисляются значения переменных a1, a2, a3, a4, a5, a6, sum, b1, b2, b3, b4, b5, b6, sum1, c1, c2, c3, c4, c5, c6, sum2, d1, d2, d3, d4, d5, d6, sum3.
- Затем проверяется, равны ли суммы цифр числа при умножении на 2, 3 и 4. Если равны, то число выводится на экран.
- В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д