Esempio n. 1
0
int isSatisfyingCondition(long long int n)
{
    int *arr,len,start,end,counter;
    long long int n1,n2,i;
    len=countDigits(n);
    arr=(int*)malloc(sizeof(int)*len);
    arr=formArray(n);
    bubbleSortDescending(arr,len);
    n2=formNumber(arr,len);
    bubbleSortAscending(arr,len);
    n1=formNumber(arr,len);
    free(arr);
    start=(int)pow(n1,1/3.0);
    start--;
    end=(int)pow(n2,1/3.0);
    end++;
    counter=0;
    for(i=start;i<=end;i++)
    {
        if(containsSameDigits(i*i*i,n) && isPerfectCube(i*i*i))
        {
            printf("%lld\n",(i*i*i));
            counter++;
        }
    }
    if(counter==5)
        return 1;
    return 0;
}
Esempio n. 2
0
int main()
{
    FILE *fin = fopen("contact.in", "r");
    FILE *fout = fopen("contact.out", "w");
    int i, j, begin, end, top, record[200001], count, res[13][4096];
    fscanf(fin, "%d %d %d", &begin, &end, &top);
    
    char buffer[1024];
    count = 0;
    while (fscanf(fin, "%s", buffer) > 0) {
        for (i = 0; i < strlen(buffer); i++)
            record[count++] = buffer[i] - '0';
    }
    
    for (i = 0; i < count; i++) {
        for (j = begin; j <= end; j++) {
            if (i + j > count)
                break;
            int temp = formNumber(record+i, j);
            res[j][temp]++;
        }
    }
    
    struct mark contact[5000];
    count = 0;
    for (i = begin; i <= end; i++) {
        for (j = 0; j < 4096; j++) {
            if (res[i][j] != 0) {
                contact[count].length = i;
                contact[count].value = j;
                contact[count++].count = res[i][j];
            }
        }
    }
    
    sortInsertion(contact, count);
    
    int next, num;
    i = j = 0;
    next = 1;
    while (i < top && j < count) {
        if (next) {
            fprintf(fout, "%d\n", contact[j].count);
            next = 0;
            num = 0;
        }
        char output[13];
        formString(contact[j].length, contact[j].value, output);
        fprintf(fout, "%s", output);
        num++;
        if (contact[j+1].count != contact[j].count) {
            i++;
            next = 1;
            fprintf(fout, "\n");
        }else {
            if (num == 6) {
                fprintf(fout, "\n");
                num = 0;
            }else 
                fprintf(fout, " ");
        }
        j++;
    }
    
    fclose(fin);
    fclose(fout);
}