Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <stdio.h>
- //Avoid io blocking and 64 bit math
- //32 bit mod and div - OK
- inline void printDoubleApprox(double In)
- {
- int beforepoint = (int)(In);
- int afterpoint = (int)((In-beforepoint)* 10000);
- char buf[10], *p = buf;
- do
- {
- *p++ = '0' + beforepoint % 10;
- beforepoint /= 10;
- }
- while (beforepoint);
- do
- {
- _putchar_nolock(*--p);
- }
- while (p > buf);
- _putchar_nolock('.');
- _putchar_nolock('0' + (afterpoint%10000)/1000);
- _putchar_nolock('0' + (afterpoint%1000)/100);
- _putchar_nolock('0' + (afterpoint%100)/10);
- _putchar_nolock('0' + (afterpoint%10));
- _putchar_nolock('\n');
- }
- int main()
- {
- //char * inpt = new char[256*1024];
- //Stack allock = faster
- char inpt[256*1024];
- int indx=0;
- indx = fread(inpt,1,256*1024,stdin);
- bool valIn = false;
- long long mult = 1;
- long long val = 0;
- while(indx--)
- {
- if(inpt[indx] >= '0' && inpt[indx] <='9') //digit
- {
- if(!valIn)
- {
- val = 0;
- mult = 1;
- valIn=true;
- }
- val = val + mult*(inpt[indx]-'0');
- //mult *= 10;
- mult = (mult<<3) + (mult<<1);
- }
- else //invalid char, outputting
- {
- if(valIn)
- {
- valIn = false;
- double v = sqrt((double)val);
- printDoubleApprox(v);
- }
- }
- }
- if(valIn)
- {
- double v = sqrt((double)val);
- printDoubleApprox(v);
- }
- //delete[] inpt;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement