Задачи с дълги числа

Умножение (Национална олимпиада, областен кръг, 2002, зад. D1).

Напишете програма, която въвежда от клавиатурата едно естествено число, което може да има до 50 цифри, след това въвежда друго естествено число, което е едноцифрено и отпечатва на екрана произведението на двете въведени числа.


Пример:
Вход                         Изход
123456                       864192
7


Решение: Преобразуваме въведения низ от цифри в масив от числа а. След това извършваме умножението на елементите на този масив с едноцифреното число b и резултатът получаваме в масива r.

#include<iostream>
#include<string>
using namespace std;
char s[100];
int a[100], r[100];
int b;
void main()
{
  cin>>s;  
  cin>>b;
  int n=strlen(s)-1;
  int i=n,
  j=0;
  while(j<=n)
  {
    a[j]=s[i]-'0';
    i--;
    j++;
  }
  int c=0, w;
  for(i=0; i<=n; i++)
  {
    w=b*a[i]+c;
    r[i]=w%10;
    c=w/10;
  }
  r[n+1]=c;

  if(r[n+1]>0) cout<<r[n+1];
  
  for(i=n; i>=0; i--) cout<<r[i];
  cout<<"\n";
}