Problem :
------------------------------------------------------------------
Input Description
------------------------------------------------------------------As a crude form of hashing function, Lars wants to sum the digits of a number. Then he wants to sum the digits of the result, and repeat until he have only one digit left. He learnt that this is called the digital root of a number, but the Wikipedia article is just confusing him.
Can you help him implement this problem in your favourite programming language?
It is possible to treat the number as a string and work with each character at a time. This is pretty slow on big numbers, though, so Lars wants you to at least try solving it with only integer calculations (the modulo operator may prove to be useful!).
------------------------------------------------------------------
Formal Inputs & Outputs
Input Description
A positive integer, possibly 0.
Output Description
An integer between 0 and 9, the digital root of the input number.
Sample Inputs & Outputs
31337
Sample Output
8, because 3+1+3+3+7=17 and 1+7=8
Challenge Input
1073741824
Challenge Input Solution
?
Note :
GIve the user option to either input the number as well or read input from a binary file in binary mode.
1073741824
Challenge Input Solution
?
Note :
GIve the user option to either input the number as well or read input from a binary file in binary mode.
Solution :
Code :
#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h>
using namespace std;
int main(void){
long int n,m;
int c=0,a=0;
printf("Take Input from binary File (y/n) :=:");
char ch=getch();
while(1){
if(ch=='Y'||ch=='y'){
char r[25];
cout<<"\n\n\nEnter The Name of the File :=:"; cin>>r;
printf("\n\n Write New Value or Read Previous ? (W/R) :=:");
char chi=getch();
if(chi=='W'||chi=='w'){
int num;
cout<<"\n\nEnter The Number to store :=: "; cin>>num;
ofstream of(r,ios::binary|ios::out);
of.write((char*)&num,sizeof(&num)); // writing
of.close();
}
ifstream in(r,ios::binary|ios::in);
if(!in){
cout<<"\n\n\t\t::Wrong Input of file::\n";
}
else{
in.read((char*)&n,sizeof(&n)); // then reading what is written :p
}
in.close();
break;
}
else if(ch=='N'||ch=='n'){
cout<<"\n\n\nEnter Your Number :=:"; cin>>n; cout<<"\n\n";
break;
}
else{
continue;
}
}
if(n<=9){
cout<<"Invalid Entry Kindly Number Should be greater than 9\n\n";
exit(1);
}
m = n;
while(m){
c+=(m%10);
m/=10;
}
m = c;
while(m){
a+=(m%10);
m/=10;
}
cout<<"\n\n\nHere is the Digital Root of Num :"<<n<<": :=:"<<a<<"\n\n";
return 0;
}
Logic & Implementation :
- Used Concept of Binary File I/O , in.read((char *)& (Here is Your Variable/identifier) , sizeof(& (Here is Your Variable/identifier) )) . same with in.write , it will convert your each bit( character ) in binary while storing .
- Digital root is already explained.
- Use printf() when you are using getch() or getche() , printf() is in stdio.h and getch() and getche() is in conio.h
- When Stream directories Like fstream or iostream will be used Do not use as .h at end in c++ Use using namespace std; as i've used .
- Keep In Mind { Everything inside this will be destroyed after it complete execution called Scope } .
0 Comments :
Post a Comment
Having Confusion ,oH Dear ask me in comments!!