小飞的疑问
题号:NC21624
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

小飞有n*n的魔法纸片(可以变出糖果),现在有m个人来找小飞玩游戏,小飞希望用魔法纸片来使朋友们开心,纸片可以被随便裁剪,n*n的魔法纸片可以裁剪成任意大小的小魔法纸片,小飞通过pubgoso得知,i*j尺寸的纸片可以产生(i*i+j*j)个糖果。小飞希望裁剪的纸片可以让每个朋友分到一样多的糖果,这样他的朋友们就会很开心。小飞希望知道有多少种合理的裁剪方法使得每个朋友都开心呢?请帮他回答这个问题。

输入描述:

输入仅一行,包含两个整数n(1 ≤  n ≤ 1,000,000,000),m(1 ≤ m  ≤ 1,000)

输出描述:

输出一个数表示多少种合理的裁剪方法
示例1

输入

复制
3 3

输出

复制
1

说明

这个例子中,只有(3,3)满足,因为3*3+3*3=18,3可以整除于18。