Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("sir4.in");
ofstream fout("sir4.out");
int k, i, num, a[100], fr[100],m, stop;
int main()
{
fin >> k;
num=k*k;
num=num%1000;
a[1]=(num/100)*10+(num/10)%10;
i=1; stop=0;
while (!stop)
{
fr[a[i]]=1;
num=a[i]*a[i]%1000;
m=(num/100)*10+(num/10)%10;
if (fr[m]==0) { ++i; a[i]=m;}
else { stop=1; m=i;}
}
for (i=1; i<=m; ++i)
fout << a[i] << " ";
fout << endl;
if (fr[0]==1) fout << 0 << " ";
for (i=1; i<10; ++i)
{
if (fr[i]==1)
{
fout << i << " ";
for (int j=i*10; j<=i*10+9; ++j)
{
if (fr[j]==1) { fout << j << " "; fr[j]=0;}
}
}
else
{
for (int j=i*10; j<=i*10+9; ++j)
{
if (fr[j]==1) { fout << j << " "; fr[j]=0;}
}
}
}
}
Explicație:
pentru a evita repetarea folosesc un vector caracteristic unde pun 1 la apariţia unui nou element in vector. otodată ân vectorul a punem termenii curenţi ai şirului generat în ordinea lor de apariţie (asta e necesar pentru punctul a), iar pentru punctul b) avem nevoie să scriem în fişier şirul ordonat după primele cifre. Aici e benefic vectorul caracteristic fr[ ]
Dacă apar ântrebări, răspundem... Succese! Parcă s-au terminat orele, adică s-a finisat anul şcolar? sau nu?
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!