10025  The ? 1 ? 2 ? ... ? n = k problem
Moderator: Board moderators
10025  The ? 1 ? 2 ? ... ? n = k problem
The problem description doesn't say that the first input is the number
of items to process! Please fix this!
Chris
of items to process! Please fix this!
Chris
Doh!
Many apologies  I'm new here, and hadn't realized the multiple input
condition at all! It'd be nice if this was mentioned in the problems
themselves, e.g. Note: multiple input (with link to the page describing
the multiple input condition). It's certainly a small thing, but it would
save people from wasting time, and all the input/output conditions would
be in the actual problem description.
Chris
condition at all! It'd be nice if this was mentioned in the problems
themselves, e.g. Note: multiple input (with link to the page describing
the multiple input condition). It's certainly a small thing, but it would
save people from wasting time, and all the input/output conditions would
be in the actual problem description.
Chris
10025
Can you tell me if the following input and output datas are right?
Thank you!
Input Output

1000000000 44723
43562436 9335
235344 687
0 3
234387 685

Can you send some of your datas to me ?
Bye!
Thank you!
Input Output

1000000000 44723
43562436 9335
235344 687
0 3
234387 685

Can you send some of your datas to me ?
Bye!
aaaaaaaaaaaaaaaaaaaaa
10025
Okay I have fixed 2 major bugs: (1)realizing multiple input and (2)recognizing output=3 for input=3. But I still get WA...any help folks?
[cpp]
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int numcases;
cin >> numcases;
for(int i=0; i<numcases; i++)
{
unsigned number, temp;
double root;
unsigned root2;
cin >> number;
number = abs(number);
if(number == 0)
root2 = 3;
else if(number == 1)
root2 = 1;
else
{
temp = 2 * number;
root = sqrt(temp);
root2 = (root == (int)root) ? (int)root : (int)root+1;
while(true)
{
if((root2*(root2+1)/2  number)%2 == 0)
break;
root2++;
}
}
cout << root2 << "\n";
}
return 0;
}[/cpp]
[cpp]
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int numcases;
cin >> numcases;
for(int i=0; i<numcases; i++)
{
unsigned number, temp;
double root;
unsigned root2;
cin >> number;
number = abs(number);
if(number == 0)
root2 = 3;
else if(number == 1)
root2 = 1;
else
{
temp = 2 * number;
root = sqrt(temp);
root2 = (root == (int)root) ? (int)root : (int)root+1;
while(true)
{
if((root2*(root2+1)/2  number)%2 == 0)
break;
root2++;
}
}
cout << root2 << "\n";
}
return 0;
}[/cpp]

 New poster
 Posts: 38
 Joined: Mon Dec 09, 2002 1:53 pm
 Location: Poznan, Poland
I solved the problem and it works for all inputs that I can find (in board or in the problem...) but I still receive WA. Can you tell what can be wrong?
[c]
deleted
[/c]
[c]
deleted
[/c]
Last edited by pc5971 on Tue Jan 21, 2003 7:49 am, edited 1 time in total.
It's a multiple input problem (blue check mark). You should read http://acm.uva.es/problemset/minput.html to find out what the input and output should look like. The first line of input contains the number of cases, and there should be a blank line between each output case.
10025
[cpp]
#include <iostream.h>
#include <stdio.h>
void main(void){
int number,i,base,different,state;
while(1)
{
i=0;
base=0;
state=0;
cin>>number;
if (feof(stdin)) break;
if (number < 0)
number=number;
while(1)
{
i++;
base+=i;
if (base>=number)
{
different=basenumber;
if ((different==0)(different % 2==0))
{
break;
}
}
}
if (number==0)
cout<<3<<endl;
else
{
cout<<i<<endl;
}
}
}
[/cpp]
i get a WA, pls help help me....
#include <iostream.h>
#include <stdio.h>
void main(void){
int number,i,base,different,state;
while(1)
{
i=0;
base=0;
state=0;
cin>>number;
if (feof(stdin)) break;
if (number < 0)
number=number;
while(1)
{
i++;
base+=i;
if (base>=number)
{
different=basenumber;
if ((different==0)(different % 2==0))
{
break;
}
}
}
if (number==0)
cout<<3<<endl;
else
{
cout<<i<<endl;
}
}
}
[/cpp]
i get a WA, pls help help me....
I deleted the code, I think you can understend why... but I'll try to explain my algorithm...
1. You find the smallest n in that way that
1+2+...+n >= s (where s is the input)
For this you have to solve the equation in n:
n^2 + n 0 2s = 0
=> n= ceil( (sqrt(1+8s) 1)/2 )
2. Now your solution is n or n+1 or n+2, because
d=sn*(n+1)/2 must be (even or odd I don't know very well english so I'm always in doubt wich is the word but ) d mod 2=0...
Good luck,
Carmen
1. You find the smallest n in that way that
1+2+...+n >= s (where s is the input)
For this you have to solve the equation in n:
n^2 + n 0 2s = 0
=> n= ceil( (sqrt(1+8s) 1)/2 )
2. Now your solution is n or n+1 or n+2, because
d=sn*(n+1)/2 must be (even or odd I don't know very well english so I'm always in doubt wich is the word but ) d mod 2=0...
Good luck,
Carmen