示例#1
0
文件: A10019.c 项目: kusabashira/misc
int main() {
	char digits[N+1];
	for (;;) {
		scanf("%s", digits);
		if (strcmp(digits, "0") == 0)
			break;

		printf("%d\n", sum_of_digits(digits));
	}
	return 0;
}
int main(void) {
    int i;
    long long a, b;
    long long found[MAX_FOUND];
    int nfound = 0;
    for (a = 1; a < 1000; a++) {
	for (b = 1; b < 1000; b++) {
	    long long ex = b;
	    long long x = a;
	    // calculate a^b
	    while (--ex) {
		// bail if we might overflow
		if (x & 0xFFC0000000000000) {
		    goto too_big;
		}
		x *= a;
	    }
	    if (x > 9 && sum_of_digits(x) == a) {
		// add to list of found numbers (sorted)
		for (i = 0; i < nfound; i++) {
		    if (x < found[i]) {
			long long temp = found[i];
			found[i] = x;
			x = temp;
		    }
		}
		found[nfound] = x;
		nfound++;
		assert(nfound < MAX_FOUND);
	    }
	}
too_big:
	;
    }
    for (i = 0; i < nfound; i++) {
	printf("a_%d: %lld\n", i+1, found[i]);
    }
    return 0;
}
示例#3
0
int main(){
    int n;
    scanf("%d", &n);

    int pos = 0;
    for(int num = 99999;;num--){
        int sum = sum_of_digits(num);
        if(sum >= n)
            break;
        n -= sum;
        a[pos++] = num;
    }

    if(n != 0)
        process(n, pos);

    printf("%d\n%d", pos, a[0]);
    for(int i = 1;i < pos;i++)
        printf(" %d", a[i]);
    printf("\n");

    return 0;
}
示例#4
0
int main()
{
    //int carry_over;
    std::clock_t startT;
    startT = std::clock();
    std::string large_number = "1";


    //std::cout << sum_of_digits("123456789") << std::endl;
    //std::cout << strmulti2("34359738368") << std::endl;

    //std::cout << strmulti2("2048") << std::endl;

    for (int i = 1; i <= 1000; ++i){
        large_number = strmulti2(large_number);
        //std::cout << i << " : " << large_number << std::endl;
    }

    std::cout << large_number << std::endl;
    std::cout << sum_of_digits(large_number) << std::endl;

    std::cout << "Elapsed time : " << (std::clock()-startT)/(double)CLOCKS_PER_SEC << "sec";
    return 0;
}
int main()
{
	int n, i;
	scanf("%d",&n);
	if(n < 1 || n > 10000)
	{
		printf("Invalid Input\n");
		return 0;
	}
	getchar();
	
	node *list1 = NULL, *list2 = NULL;

	char str1[n + 1], str2[n + 1];

	scanf("%s", str1);
	getchar();
	int len1 = strlen(str1);

	scanf("%s", str2);
	getchar();
	int len2 = strlen(str2);

	if(len1 != len2 || len1 != n || len2 != n)
	{
		printf("Please enter correct input.\n");
		return 0;
	}

	for(i=n-1;i>=0;i--)
	{
		char ch = str1[i];
		if(ch >= 48 && ch <= 57)
		{
			int num = (int ) ch - 48;
			push(&list1, num);
		}
		else
		{
			printf("Please enter correct input.\n");
			return 0;
		}
	}

	for(i=n-1;i>=0;i--)
	{
		char ch = str2[i];
		if(ch >= 48 && ch <= 57)
		{
			int num = (int ) ch - 48;
			push(&list2, num);
		}
		else
		{
			printf("Please enter correct input.\n");
			return 0;
		}
	}

	list1 = sum_of_digits(list1, list2);
	
	if(carry)
	{
		push(&list1, carry);
	}
	print_list(list1);
	return 0;
}