Posted: Thu Sep 06, 2007 8:39 am
Your code doesn't even pass the samples.
Code: Select all
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
static List vrniKaprekar(int min, int max){
List rezultat = new ArrayList();
for(int i = min; i <= max; i++){
if(isKaprekar(i))
rezultat.add(new Integer(i));
}
return rezultat;
}
static boolean isKaprekar(int stevilo) {
boolean odgovor = false;
int[] stevila = {9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4879, 4950, 5050, 5292, 7272, 7777, 9999, 17344, 22222, 38962};
for(int i = 0; i < stevila.length; i++) {
if(stevila[i] == stevilo) odgovor = true;
}
return odgovor;
}
void Begin() {
String input;
int n = 0;
StringTokenizer idata;
List rezultat = new ArrayList();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((input = br.readLine()) != null){
if(input.equals("\r") || input.equals("")) {
break;
}
idata = new StringTokenizer (input);
int m = Integer.parseInt(idata.nextToken());
if(n == 0){
if(m >= 1 && m <= 1000) n = m;
}else{
int max = Integer.parseInt (idata.nextToken());
if(m > 1 && max <= 40000 && m <= max){
rezultat.add(vrniKaprekar(m, max));
}
else {
List neki = new ArrayList();
neki.add("bla");
rezultat.add(neki);
}
}
}
if(rezultat.size() == n && n >= 1 && n <= 1000){
for(int i = 0; i < rezultat.size(); i++){
List rez = (List)rezultat.get(i);
if(rez.isEmpty()){
System.out.println("case #" +(i+1));
System.out.println("no kaprekar numbers");
System.out.println();
}
else if(rez.get(0).equals("bla")){}
else{
System.out.println("case #" +(i+1));
for(int k = 0; k < rez.size(); k++){
System.out.println(rez.get(k));
}
System.out.println();
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Main sem = new Main();
sem.Begin();
}
}
Code: Select all
/***** kaprekar numbers @ 974 *****/
#include<stdio.h>
#include<math.h>
long test,inf,sup,cse;
long square,n,m,s,flag,d;
int main()
{
}
}
return 0;
}
enjoy programming
Code: Select all
#include<stdio.h>
int kaprekar(long long n)
{
long long i,j,c,p[100],x,y,z,f;
x=n*n;
i=0;
f=0;
while(x>0)
{
y=x%10;
p[i++]=y;
z=x/10;
c=0;
for(j=i-1;j>=0;j--)
{
c=c*10+p[j];
}
if(c+z==n&&c!=0&&z!=0)
{
f=1;
break;
}
x=z;
}
return f;
}
int main()
{
long long t,a,b,i,j,k,s[1000];
scanf("%lld",&t);
for(i=1;i<=t;i++)
{
scanf("%lld %lld",&a,&b);
printf("case #%lld\n",i);
k=0;
for(j=a;j<=b;j++)
{
if(kaprekar(j)==1)
s[k++]=j;
}
if(k==0)
{
printf("no kaprekar numbers\n\n");
continue;
}
for(j=0;j<k;j++)
printf("%lld\n",s[j]);
if(i<t)
printf("\n");
}
return 0;
}
Code: Select all
# include <iostream>
using namespace std;
int main()
{
//freopen("input.txt" , "r" , stdin);
int caseN , fN , sN , part1 , part2 , nSquare , temp , nuOfDigits ,
tensToDivision , digit ;
bool kaprekar;
cin>> caseN;
for(int i=1 ; i <= caseN ; i++ )
{
cin>> fN >> sN;
kaprekar = false;
cout<<"case #" << i <<endl ;
part1 = part2 = 0;
for(int j=fN ; j <= sN ; j++)
{
nSquare = temp = j*j;
tensToDivision = 1;
nuOfDigits = 0 ;
if(temp < 10)
continue;
while (temp != 0 )
{
temp = temp / 10 ;
nuOfDigits++;
//tensToDivision *= 10;
}
if(nuOfDigits % 2 == 0)
{
temp = nSquare;
int n , myNumb, result =0 ;
for(int k=0 ; k < nuOfDigits/2 ; k++ )
{
n = temp / 10 ;
myNumb = temp - (n*10) ;
myNumb = myNumb*tensToDivision + result ;
result = myNumb;
temp = n ;
tensToDivision *= 10 ;
}
part1 = nSquare / tensToDivision ;
part2 = result ;
/*if(part1 <= 0 || part2 <= 0)
continue;*/
if(part1 + part2 == j)
{
cout<<j<<endl;
kaprekar = true;
}
}
}
if( !kaprekar )
{
cout<<"no kaprekar numbers\n";
}
cout<<endl;
}
return 0;
}
yes sir i chequed from wikipidia all the kaprekar numbers are existed in my code.........brianfry713 wrote:Precalculate all the Kaprekar Numbers.