牛客OI周赛7-提高组(A 小睿睿的等式)

题目描述
小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n/k的等式有多少种(B+A=n与A+B=n看作一种)
注:
牛客OI周赛7-提高组(A	小睿睿的等式)
“=”与“+”分别需要使用2根火柴棒

输入描述:
一行2个整数n,k,保证n取模k为0
输出描述:
一行一个整数,表示答案

示例1
输入
60 2

输出
4

说明
11+49=60
13+47=60
17+43=60
19+41=60

示例2
输入
100000 1250

输出
3092

备注:
对于30%的数据,0<=n<=100

对于50%的数据,0<=n<=1000000

对于100%的数据,0<=n<=50000000;A,B>=0

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	long long int n,k,t,a[10]={6,2,5,5,4,5,6,3,7,6},i,s,s1,cnt=0,x=0,s2,y=0,m=0;
	scanf("%lld %lld",&n,&k);
	t=n/k-4;
	s=n;
	while(s>0)
	{
		x=x+a[s%10];
		s=s/10;
		y++;
	}
	s2=x;
	x=x+6;
	if(x==t)
		cnt++;
	if(21*y<t)
	{
		cout<<0<<endl;
	}
	else
	{
		for(i=1;i<=n/2;i++)
		{
			x=0;
			s=i;
			s1=n-i;
			while(s>0)
			{
				if(x>t)
				{
					m=1;
					break;
				}
				x=x+a[s%10];
				s=s/10;
			}
			if(m==1)
			{
				m=0;
				continue;
			}
			if(x>t)
			{
				continue;
			}
			while(s1>0)
			{
				if(x>t)
				{
					m=1;
					break;
				}
				x=x+a[s1%10];
				s1=s1/10;
			}
			if(m==1)
			{
				m=0;
				continue;
			}
			if((x+s2)==t)
				cnt++;
		}
		cout<<cnt<<endl;
	}
	return 0;
}