Odpowiedź :
Odpowiedź:
#include<iostream>
int countOnesInNumber(int n){
int counter = 0;
while (n > 0) {
if (n % 10 == 1) {
counter++;
}
n /= 10;
}
return counter;
}
int main() {
int n;
std::cout << "Podaj liczbe\n";
std::cin >> n;
int counter = 0;
for (int i = 0; i <= n; i++) {
counter += countOnesInNumber(i);
}
std::cout << counter;
return 0;
}
Wyjaśnienie:
Odpowiedź:
#include <iostream>
using namespace std;
int main() {
int i,a,n=0;
cout<<"Podaj liczbę: ";
cin>>a;
for (i=1;i<=a;i++){
if (i/10==1){
n=n+1;}
if (i/100==1){
n=n+1;}
if (i%10==1){
n=n+1;}}
cout<<"\nLiczba występowania cyfry 1 wynosi:"<<n;
}
Wyjaśnienie:
Sprawdzamy w kolejności:
i/10==1 - czy jest to liczba 10-19 (przy dzieleniu całkowitym przez 10 da nam wynik 1)
i/110 - czy jest to liczba 100-106 (przy dzieleniu całkowitym przez 100 da nam wynik)
i%10==1 - czy jest to liczba {1, 11, 21, 31, ..., 91, 101} (przy dzieleniu przez 100 daje resztą z dzielenia równą 1).
WERSJA Z ZAŁOŻENIEM, że podana liczba jest z zakresu (0, 106):
#include <iostream>
using namespace std;
int main() {
int i,a,n=0;
cout<<"Podaj liczbę: ";
cin>>a;
if (a>0 && a<106){
for (i=1;i<=a;i++){
if (i/10==1){
n=n+1;}
if (i/100==1){
n=n+1;}
if (i%10==1){
n=n+1;}}
cout<<"\nLiczba występowania cyfry 1 wynosi:"<<n;
}
else
cout<<"\nBłędnie podana liczba.";}