新手光能
才怪。
我是遵纪守法的好公民~
丢手绢
酷町猫在放假期间和他的小伙伴们玩丢手绢游戏。他让N个小伙伴围着圈坐下,给他们从1至N编号。酷町猫给他们每人发一张卡片,上面有数字Ai。
每个人轮流走上一圈,并且同时将手里的手绢丢给那些手里卡片的数字能整除自己手里数字的小伙伴,然后回到原来的位置。现在请你帮酷町猫计算,每个小伙伴需要丢出的手绢数。
输入描述 Input Description
第1行:一个整数N,表示N个小伙伴
第2行至N+1行:第i+1行包含一个整数Ai,表示小伙伴i手里的数字大小
输出描述 Output Description
共N行
第i行表示小伙伴i需要丢出的手绢个数
样例输入 Sample Input
5 2 1 2 3 4
样例输出 Sample Output
2 0 2 1 3
数据范围及提示 Data Size & Hint
1≤N≤100000
1≤Ai≤1000000
#include<iostream>
#include<cmath>
using namespace std;
long long a[1000001];
int main(){
long long n;
cin>>n;
for(long long i=1;i<=n;i++){
cin>>a[i];
}
for(long long i=1;i<=n;i++){
long long s=0;
for(long long j=1;j<=sqrt(a[i]);j++){
if(a[i]%j==0){
if(j!=a[i]/j){
s+=2;
}
else{
s++;
}
}
}
if(a[i]%2==1)cout<<s-1<<endl;
else cout<<s<<endl;
}
return 0;
}
0分,求解
张欣悦在2021-08-21 12:46:52追加了内容
(话说这样不违规吧)
张欣悦在2021-08-21 13:34:47追加了内容
DING
张欣悦在2021-08-21 14:22:02追加了内容
ding
张欣悦在2021-08-21 16:21:23追加了内容
没人来吗???
张欣悦在2021-08-21 16:52:28追加了内容
PS:不要水贴,说点有用的
不然举报不谢
资深守护
你要弄个桶,否则一个数有两个的时候,你只会加1个,而实际上应该加2个,AC代码:
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int b[1000005];
int c[100005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=sqrt(a[i]);j++)
{
if(a[i]%j==0)
{
c[i]+=b[j];
if(a[i]%(a[i]/j)==0&&a[i]/j!=j) c[i]+=b[a[i]/j];
}
}
}
for(int i=1;i<=n;i++)cout<<c[i]-1<<endl;
return 0;
}
采纳吧
资深天翼
标题党 哈哈哈哈哈哈哈哈哈哈或或或或或或或或或或或或或或或或或或或哈哈哈哈哈哈哈哈哈哈或或或或或或或或或或或或或或或或或或或哈哈哈哈哈哈222222222222222222222222超超超超冲冲冲擦擦擦出冲冲冲擦擦擦呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜222222222一已IG咕咕咕咕咕咕咕咕咕咕咕咕沟沟壑壑哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈发发发发发当场出彩超超超超冲冲冲擦擦擦出冲冲冲擦擦擦臭2222222222222222222不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不三百三十三万三千三百三十三亿三千三百三十三万三千三百三十三v22贰亿叁仟贰佰肆拾叁万贰仟肆佰陆拾壹亿柒仟叁佰贰拾叁万肆仟叁佰叁拾贰亿肆仟伍佰叁拾贰万肆仟肆佰肆拾肆亿肆仟肆佰肆拾肆万肆仟肆佰肆拾肆