Задача на двоичный код

Тема в разделе "C/C++/C#", создана пользователем MikeMNN, 18 дек 2010.

  1. MikeMNN

    MikeMNN Гость

    Дана следующая задача:Определить,является ли периодической последовательностью двоичная запись некоторого натурального числа N, т.е. записана ли она в виде ааааааа....а, где а-некоторая непустая последовательность....

    Написать программу надо в Визуал Студио...

    У меня получился следующий код:

    Код (C++):
    #include<stdio.h>
    #include<conio.h>
    #include<locale.h>
    #define h 500
    void mat(int a[][h],int b[],int q,int r){
    int w,e,u;
    u=0;
    for(w=0;w<q;w++)
    for(e=0;e<r;e++,u++){a[w][e]=0;
    a[w][e]=b[u];};}
    void main()
    {       setlocale(LC_CTYPE,"Russian");
    int i,j,k,n,f,t,p,x[h],y[h],m,z,c,v[h][h];
    printf_s("Введите натуральное число N=");
    scanf("%d",&n);
    for(i=0;n!=0;i++)
    {       k=n%2;
    n=n/2;
    x[i]=k;}
    p=i-1;
    for(f=0;f<i;f++){
    y[f]=x[p]; p=p-1;}
    z=f;
    if(z!=3&&z%2!=0&&z%3!=0){p=2;for(i=0;i<z&&p!=0;i++)
    if(y[i]!=1)p=0;}
    t=1;
    if(p!=2&&p!=0)
    for(i=f/2,k=0;i>k&&t>0;i--)
    if(f%i==0){ j=f/i; t=0;
    mat(v,y,j,i);
    for(c=0;c<(j-1)&&t==0;c++)
    for(m=0;m<i&&t==0;m++)
    if(v[c][m]!=v[c+1][m])t++;}

    if(t==0||p==2)
    {printf_s("\n Двоичная запись заданного числа является периодической последовательностью,а повторяется L=");
    if(t==0)
    for(i=0;i<m;i++) printf_s("%d",v[0][i]);
    else printf_s("1");}
    else printf_s("\n Двоичная запись заданного числа не является периодической последовательностью");
    _getch();
    }
    но преподаватель сказал,что можно решить другим путём и оптимизировать... Может кто предложить что-нибудь:оптимизацию,ну,или абсолютно другой метод решения?
     
Загрузка...
Похожие Темы - Задача на двоичный
  1. elzim
    Ответов:
    0
    Просмотров:
    930
  2. ShaoKahn
    Ответов:
    1
    Просмотров:
    1.124
  3. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.107
  4. MonteCristo
    Ответов:
    1
    Просмотров:
    852
  5. bort
    Ответов:
    1
    Просмотров:
    1.180

Поделиться этой страницей