#include <string.h>
char str[7], flag[1000000]
void Init()
{
int i, j, k
memset(flag, '1', sizeof(flag))
for (i=1i<1000000i++)
{
itoa(i, str, 10)
for (j=0,k=strlen(str)-1j<=kj++,k--)
{
if (str[j]=='4'||str[k]=='4')
{
flag[i] = '0'
break
}
if ((str[j]=='6'&&str[j+1]=='2')||(str[k-1]=='6'&&str[k]=='2'))
{
flag[i] = '0'
break
}
}
}
}
int main()
{
int n, m, sum, i
Init()
while (scanf("%d%d",&n,&m), n+m)
{
for (sum=0,i=ni<=mi++) sum += flag[i]-'0'
printf("%d\n", sum)
}
return 0
}
是算法竞赛选手吗?打表法一般是这么用的:
有些题的输入输出都很简单,比如输入只有两个整数,输出一个整数这种。但是暴力肯定会超时。这时候就先暴力计算出来比如前100项的答案,列成表格人眼找规律,然后根据自己(猜的)规律直接写个程序交上去....如果AC了就猜对了,wrong answer了就再想办法。
//#include "stdafx.h"//vc++6.0加上这一行.#include "stdio.h"
int main(void){
int a,b,i,x,y,f,n
printf("Enter a & b(int)...\n")
scanf("%d%d",&a,&b)
for(n=an<=bn++){
for(x=1,n&1 ? (i=3,f=2) : (i=2,f=1)(a=i*i)<=ni+=f)
if(!(n%i))
(x+=i)+= a!=n ? n/i : 0
for(y=1,x&1 ? (i=3,f=2) : (i=2,f=1)(a=i*i)<=xi+=f)
if(!(x%i))
(y+=i)+=a!=x ? x/i : 0
if(y==n && y!=x)
printf("%d\t%d\n",n,x)
}
return 0
}