solution.cpp 1.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

//计算个位
int ge_wei(int a)
{
    if (a % 2 == 0)
        return (a * 2) % 10;
    else
        return (a * 2 + 5) % 10;
}

//计算进位
int jin_wei(char *p)
{
    char *level[] =
        {
            "142857",
            "285714",
            "428571",
            "571428",
            "714285",
            "857142"};

    char buf[7];
    buf[6] = '\0';
    strncpy(buf, p, 6); //头文件<string.h>

    int i;
    for (i = 5; i >= 0; i--)
    {
        int r = strcmp(level[i], buf);
        if (r < 0)
            return i + 1;
        while (r == 0)
        {
            p += 6;
            strncpy(buf, p, 6);
            r = strcmp(level[i], buf);
            if (r < 0)
                return i + 1;
            if (r > 0)
                return i; /**填空,填空位置与上一语句相似。在此若填写else return i;,输出结果相同*/
        }
    }

    return 0;
}

//多位数乘以7
void f(char *s)
{
    int head = jin_wei(s);
    if (head > 0)
        printf("%d", head);

    char *p = s;
    while (*p)
    {
        int a = (*p - '0');
        int x = (ge_wei(a) + jin_wei(p + 1)) % 10;
        printf("%d", x);
        p++;
    }

    printf("\n");
}

int main()
{
    f("428571428571");
    f("34553834937543");
    return 0;
}