Esempio n. 1
0
int main()
{
	int n;
	printf("input a number: n=");
	scanf("%d", &n);

	printf("the number of 1 is: %d\n", NumberOf1(n));
}
	int NumberOf1(string str) {
		if (str.empty())
			return 0;
		int first = str[0] - '0';
		int length = str.size();

		if (length == 1 && first == 0)
			return 0;
		if (length == 1 && first >= 1)
			return 1;

		int numFirstDigit = 0;
		if (first > 1)
			numFirstDigit = pow(10, length - 1);
		else if (first == 1)
			numFirstDigit = stoi(str.substr(1)) + 1;

		int numOtherdigits = first * (length - 1)* pow(10, length - 2);
		int numRecursive = NumberOf1(str.substr(1));

		return  numFirstDigit + numOtherdigits + numRecursive;
	}
	int countDigitOne(int n) {
		if (n <= 0)
			return 0;
		string str = to_string(n);
		return NumberOf1(str);
	}
Esempio n. 4
0
int main(int argc, char *argv[])
{
    int n = atoi(argv[1]);
    printf("%d %d\n",NumberOf1_Regular(n),NumberOf1(n));
    return 0;
}