惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
月光博客
月光博客
T
Tailwind CSS Blog
小众软件
小众软件
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
B
Blog RSS Feed
博客园 - 司徒正美
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 聂微东
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
博客园 - Franky
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research

iCode

春节到了,送一波 Moon FM 兑换码 马上 2020 了,送一波 zClock 兑换码. 为了收集和整理编程的常用单词,我写了个背单词应用 推荐一个使用的工具集合 MDTools MAC 应用延时录屏 timelapseZ 送 20 个注册码 Code Review 代码审阅初窥门径 2017 Apple 设计大奖得主 Lake 涂色兑换码 「艾宾浩斯计划表」¥6 免费放送 50 枚促销代码 视觉图表 for iOS ¥68 分享 50 个促销代码 送 Instastack, OneRadio ,HaloRadio for Windows 等兑换码。 花钱请 ios 码农将几个开源功能组合实现。 封装了一个 Markdown 库 - EFMarkdown,求资瓷...QWQ 刚把邮件发送换成 mailgun 了,想测一下激活码邮件的发送情况,发一大波 HaloRadio , PhotoStack(Instastack) ,ONERadio 免费兑换码啦 二维码扫描器 For Mac 在这里再发 50 个兑换码吧 发码了 PhotoStack (Instastack) for Instagram 和 HaloRadio 各 10 个 发一些 MWeb for iOS ( Markdown 编辑器)内购兑换码,共 20 枚,分三次发(主要是分享到 ProductHunt 后没什么人投票,来求一下票票) 发 10 个 Instastack for Instagram 兑换码。 Halo for Radio 上 Windows Store 啦。发 Promotional code. 赠送些 VeXplore 兑换码以及开源计划 上次没抢到的同学,新的一波 Instastack 兑换码来了 QPai :一个扫描、展示并记录二维码、条形码及其所表示内容的小工具,附 20 枚兑换码 奉上 Instastack for Instagram Mac App Store 兑换码 若干个 第一个 Mac App,关于货币汇率,请大家多提意见,谢谢(附送几个兑换码,先到先得) iOS 创意应用“分形的奥秘:朱利亚集合” Beta 公开测试邀请 发一批 ONERadio 兑换码 做了个囚徒健身的 APP,来发下促销码, 放十个码, iOS 通知中心直接翻译剪切版文本 iOS 付费软件 分发兑换码求各位拍砖! 有谁知道 iTunes Window 插件是什么鬼吗,刚好有这个需求。
问一道 code 题
stebest · 2017-11-11 · via iCode

之前刷题的时候遇到一个题目,感觉做法没错,但是总是不通过,可能是当局者迷,不知道有没有人能帮忙找出来。

小易有一个长度为 N 的正整数数列 A = {A[1], A[2], A[3]..., A[N]}。
牛博士给小易出了一个难题:
对数列 A 进行重新排列,使数列 A 满足所有的 A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是 4 的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。

主要方法是寻找能被 4 整除和只能被 2 整除的数, 代码如下:

#include <stdio.h>
int Isarray(int n, int a[100000])
{
    int n1=0,n2=0,n4=0,i;
    for(i=0;i<n;i++)
    {
        if(a[i]%4==0)
            ++n4;
        else if(a[i]%2==0)
             ++n2;
        else
             ++n1;
    }
    //printf("%d,%d,%d,%d\t",n1,n2,n4,n);
    if (n==1 && n4 )
        return 1;
    if((n4>=n1) ||((n4>= n1-1) &&(n4+n1 == n)))
        return 1;
    else
        return 0;
    }
int main(void)
{
    int i,j,t,n,a[100000],b[10];
    scanf("%d",&t);
    scanf("%d",&n);
    for(j=0;j<t;j++)
    {
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    b[j]=Isarray(n,a);
    }
    for(j=0;j<t;j++)
    if(b[j])
        printf("Yes");
    else
        printf("No");
    return 0;
}

但是我看类似的代码,比如:

#include <stdio.h>
 
int n;
int arr[100100];
 
int countMod4, countMod2;
 
void read() {
    countMod4 = 0;
    countMod2 = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", arr + i);
        if (arr[i] % 4 == 0) {
            ++countMod4;
        } else if (arr[i] % 2 == 0) {
            ++countMod2;
        }
    }
}
 
void work() {
    int countOdd = n - countMod4 - countMod2;
    if ((n == 1 && countMod4) || countMod4 >= countOdd - !countMod2) {
        puts("Yes");
    } else {
        puts("No");
    }
}
 
int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        read();
        work();
    }
    return 0;
}

这样就是可以通过的。
弄不清楚错在哪了。