백준 작심N일

이때, 정수 N이 최댓값을 가질 수 있도록 노력하시오. (주어지는 정수는 1보다 크거나 같고, 2,147,483,647보다 작거나 같다)

1 Like

일단 오늘부터 , , ,

1225번: 이상한 곱셈
#include <stdio.h>
#include <string.h>

int main(void)
{
    char A[20004];
    int i;
    long long int sum_a=0, sum_b=0;

    gets(A);

    for (i=0; A[i]!=' '; i++)
        sum_a += A[i] - '0';

    for(++i; A[i]!='\0'; i++)
        sum_b += A[i] - '0';

    printf("%lld \n", sum_a * sum_b);

    return 0;
}

2,147,483,647 ÷ 365 = 5,883,516.8410959
최대 588만년 ㄷㄷ

1252번: 이진수 덧셈 (B2 math)
#include <stdio.h>
#include <string.h>

int main(void)
{
    int i, j, ca, cb, add_next=0, sum, carry=0;
    char n[165];
    char a[82], b[82], result[82];

    gets(n);

    for (i=0; n[i]!=' '; i++)
        a[i] = n[i];
    a[i++] = '\0';

    for (j=i; n[j]!='\0'; j++)
        b[j-i] = n[j];
    b[j-i] = '\0';

    ca = strlen(a);
    cb = strlen(b);

    if (ca < cb)
    {
        strcpy(n, a);
        strcpy(a, b);
        strcpy(b, n);

        j = ca;
        ca = cb;
        cb = j;
    }

    while (ca > 0)
    {
        sum = (carry == 1) ? 1 : 0;
        sum += (cb == 0) ? 0 : b[cb-- -1]-'0';
        sum += a[ca-- -1]-'0';

        if (sum >= 2)
        {
            carry = 1;
            sum -= 2;
        }
        else carry = 0;

        result[ca] = sum + '0';
    }
    
    if (carry == 1) printf("1");
    
    printf("%s\n", result);

    return 0;
}

아직 미해결 , , , 반례찾는중
벌써 작심1일될뻔;