永发信息网

memset问题,求解释

答案:1  悬赏:10  手机版
解决时间 2021-02-05 10:50
#include
using namespace std;
int hash1[1000010];
int hash2[1000010];
int main()
{
int a,b,c,d;
int i,j;
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
memset(hash1,0,sizeof(hash1));
memset(hash2,0,sizeof(hash2));//为什么超时,去掉一个改成for循环就不超

if((a > 0 && b > 0 && c > 0 && d > 0) || (a < 0 && b < 0 && c < 0 && d < 0))
{
printf("0\n");
continue;

}
int ans = 0, s;
for(i = 0; i <= 1000001; i++)
hash1[i] = hash2[i] = 0;
for(i = 1; i <= 100; i++)
{
for(j = 1; j <= 100; j++)
{
s = a * i * i + b * j * j;
if(s > 0)
hash1[s]++;
else
hash2[-s]++;
}
}
for(i = 1; i <= 100; i++)
{
for(j = 1; j <= 100; j++)
{
s = c * i * i + d * j * j;
if(s >= 0)
ans += hash2[s];
else
ans += hash1[-s];
}
}
printf("%d\n", 16 * ans);
}
return 0;
}
最佳答案
memset其实就是相当于for
把全部分的都做一次,复杂度是1000010
而你循环的话复杂度是和N有关的.n不可能永远是1000010,所以不会超时
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海面上正起着风暴,外面又黑又冷 在文中起怎么
你们觉得 李庆博 这个名字给你的第一印象是什
永臻眼镜地址在什么地方,想过去办事
韩马电动车合浦店怎么去啊,有知道地址的么
为什么算法不一样,结果一样?
如果你想买一件衣服 可你看到买家秀 都长的很
多氏的意思是什么啊?知道的请说下!
乐视界广场在什么地方啊,我要过去处理事情
"fin"在法语里是结束的意思吗
晋中2016提档线多少
少林足球谢贤袜子破了说了句什么
HONSLN眼镜怎么去啊,我要去那办事
泰安户籍政策
TUNEL细胞凋亡检测 前面的英文怎么发音谢谢大
新租了个房,墙很脏,弄个什么纸贴一下最便宜
推荐资讯
青山收费站地址有知道的么?有点事想过去
雷诺350马力升级420马力可以吗
幸福时光地址在什么地方,我要处理点事
关于今年春晚的小问题
挑三拣四的意思是什么啊?知道的请说下!
极品的意思是什么啊?知道的请说下!
耍脸子的意思是什么啊?知道的请说下!
曹操为何只挟天子以令诸侯,而不是直接称帝?
略窥一班的意思是什么啊?知道的请说下!
求一个仿爱奇艺下载缓存的完整demo(Android
桂兰药店这个地址在什么地方,我要处理点事
两男两女排成一排,则男女相间共有种.A.24B.
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?