首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

百练的poj第4045题:与3和5无关的数,机器上运行可以通过,为什么还是Wrong Answer解决办法

2012-03-27 
百练的poj第4045题:与3和5无关的数,机器上运行可以通过,为什么还是Wrong Answer题目地址 http://poj.grids

百练的poj第4045题:与3和5无关的数,机器上运行可以通过,为什么还是Wrong Answer
题目地址 http://poj.grids.cn/practice/4045/
描述
一个正整数,如果它能被x整除,或者它的十进制表示法中某个位数上的数字为x,则称其为与x相关的数.现求所有小于等于n(n<300)的与x无关的正整数的平方和.

输入
输入为一行,正整数n,(n<300)
输出
输出小于等于n的与3和5无关的正整数的平方和
样例输入
8
样例输出
134

代码如下:

#include <stdio.h>
#include <stdlib.h>

#define N1 3
#define N2 5

int main()
{
  int n,i,j,sum,temp,flag = 0;
  //printf("Input one integer:");
  scanf("%d",&n);
  if(n >= 300){ //n<300
  printf("n is too big!\n");
  return 0;
  }
  sum = 0;//result
  for(i = 1;i <= n;i++){
  flag = 0;
  if((i % N1 == 0) || (i % N2 == 0))//整数倍
  flag = 1;
  else for(temp = i / 10;temp !=0; temp = temp /10){
  j = 1 % 10;//j表示余数
  if((j == N1)||(j == N2))
  flag = 1;
  }
  if(flag == 0){
  //printf("i = %d\t",i);
  sum += i * i;
  //printf("sum = %d\t",sum);
  }
  }
  printf("%d\n",sum);
  return 0;
}

以上可以在codeblock上运行通过,试过两个小例子7,8,结果正确;欢迎各种挑错与指点

[解决办法]
擦 这么简单

#include <stdio.h>
#include <stdlib.h>

#define N1 3
#define N2 5

int main()
{
int n,i,j,sum,temp,flag = 0;
//printf("Input one integer:");
scanf("%d",&n);
if(n >= 300){ //n<300
printf("n is too big!\n");
return 0;
}
sum = 0;//result
for(i = 1;i <= n;i++){
flag = 0;
if((i % N1 == 0) || (i % N2 == 0))//整数倍
flag = 1;
else for(temp = i;temp !=0; temp = temp /10){
j = temp % 10;//j表示余数
if((j == N1)||(j == N2))
flag = 1;
}
if(flag == 0){
//printf("i = %d\t",i);
sum += i * i;
//printf("sum = %d\t",sum);
}
}
printf("%d\n",sum);
return 0;
}

热点排行