Форум » Форум, сайт и общие вопросы » Задача №3993 » Ответить

Задача №3993

НикитаКочанов: Добрый день, в школе задали задание номер 3993, решил на паскале, сверяюсь с ответом, количество цифр верно, но вот их сумма нет. Прихожу домой и начинаю писать программу на c# ответ совершенно такой же, какой и на паскале - 252089 2607 Решение: using System; namespace n17 { class Program { static void Main(string[] args) { int kolvochisel = 0; int summa = 0; for (int i = 2125; i <= 665123; i++) { int proizvcisel = 1; int sumcisel = 0; string cisel = Convert.ToString(i); for (int i2 = 0; i2 < cisel.Length; i2++) { proizvcisel *= cisel[i2] - 48; sumcisel += cisel[i2] - 48; } if(proizvcisel == 0 & sumcisel > 12) { kolvochisel += 1; summa += i; } } Console.WriteLine($"{kolvochisel} и {summa % 10000}");// } } } сылка:https://i.postimg.cc/Mpqgd2Hd/image.png

Ответов - 5

cabanov.alexey: Не вижу конвертации символа в его код вот тут cisel[i2] - 48

НикитаКочанов: cabanov.alexey[/b, использовал я cisel[i2] - 48, тк чар в инт нормально не переводиться, точнее не переводится, как мы этого хотим, а переводится в виде юникода, в юникоде 0 - это 48, 1 - 49 и тд 9 - 57. Можно было ещё сделать cisel[i2] + "", что бы перевести из char в string, но разницы в ответе это дать не должно

cabanov.alexey: Тогда я думаю проблема с переполнением типа int. Перепишите суммирование как summa = (summa+i)%10000


НикитаКочанов: cabanov.alexey , да проблема в этом, спасибо.

НикитаКочанов: cabanov.alexey , да проблема в этом, спасибо.



полная версия страницы