Поиск цифрового корня числа, заданного строкой - C (СИ)
Формулировка задачи:
нужно искать цифровой корень, но что-бы можна было записовать неограниченое количество цифр, тоесть через стринг..
Листинг программы
- #include<stdio.h>
- #include <windows.h>
- int main (void)
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int n,m;
- printf("vvedit a");
- scanf("%d",&n);
- int k=n;
- do
- {
- for(m=0; n; n/=10)
- m+=n%10;
- n=m;
- }while(n>9);
- printf("chuslo %d - %d",k, n);
- }
Решение задачи: «Поиск цифрового корня числа, заданного строкой»
textual
Листинг программы
- #include<conio.h>
- #include<string.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- #define N 13//сколь надо батя?
- char Impossibilite[N];
- void EndlessnessForYouMyDarling(char *x);
- int Find(long long,long long);
- main()
- {
- char x[10]="56789";
- EndlessnessForYouMyDarling(x);
- printf("%s", Impossibilite);
- getch();
- }
- void EndlessnessForYouMyDarling(char *x)
- {
- int IsOdd=0;int temp; int OneTime=0;
- IsOdd=strlen(x)%2;
- if(IsOdd == 1)
- {
- int Number1;
- Number1=x[0]-'0';
- temp=Number1;
- if(Number1 == 1){Impossibilite[0]='1';}
- else if(Number1 < 4 && Number1 > 1){Impossibilite[0]='1';}
- else if(Number1 < 9 && Number1 >= 4){Impossibilite[0]='2';}
- else if(Number1 == 9){Impossibilite[0]='3';}
- }
- else
- {
- int Number2;
- Number2=((x[0]-'0')*10)+x[1]-'0';
- temp=Number2;
- if(Number2 >= 9 && Number2 < 16){Impossibilite[0]='3';}
- if(Number2 >= 16 && Number2 < 25){Impossibilite[0]='4';}
- if(Number2 >= 25 && Number2 < 36){Impossibilite[0]='5';}
- if(Number2 >= 36 && Number2 < 49){Impossibilite[0]='6';}
- if(Number2 >= 49 && Number2 < 64){Impossibilite[0]='7';}
- if(Number2 >= 64 && Number2 < 81){Impossibilite[0]='8';}
- if(Number2 >= 81 && Number2 < 100){Impossibilite[0]='9';}
- }
- long Double;long long Difference;long Row=0;long kk;long long rr;char tempss[10];int t=0;
- Double=atoi(Impossibilite);
- for(long i=0;i<(N);i++)
- {
- if(OneTime == 0){
- Difference=temp-(int)pow(Double,2);
- Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0');
- OneTime=1;
- }
- rr=Find(Difference,atoi(Impossibilite)*2);
- Difference=Difference-(atoi(Impossibilite)*10*2+rr)*rr;
- itoa(rr,tempss,10);
- strcat(Impossibilite,tempss);
- if(strlen(x) <= ++Row){ /*if(t == 0){t=1;Impossibilite[Row++]='.';}*/Difference=Difference*100;}
- else {--Row;Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0');}
- }//for
- }
- int Find(long long k,long long d)
- {
- long long answer=0;
- for(long int i=1;i<100000;i++)
- {
- if(k > ((d*10+i)*i))answer++;
- else
- {
- break;
- }
- }
- return answer;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д