玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题(容斥)

题目链接:http://www.ifrog.cc/acm/problem/1138

题解:这题就是简单的容斥,但是和标准的不太一样,这个是只加上出现奇数的。其实也是挺简单的。

容斥原式:     

只求奇数那么就要球容斥的系数如果n=2,显然为a+b-2*a*b,n=3,a+b+c-2*a*b-2*a*c-2*b*c+4*a*b*c,n=4.....不妨设f(x)表示由x个数组合出来的数系数为多少,那么当x为奇数时f(x)=1-(f(1)*n-f(2)*n+f(3)*n-........-f(x-1)*n),当x为偶数的时候f(x)=-(f(1)*n-f(2)*n+f(3)*n-f(4)*n+.....+f(x-1)*n)这个规律是总结出来的具体画一下图。然后可以得到系数为2^(k - 1),

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
ll gcd(ll a , ll b) {
    return (b > 0) ? gcd(b , a % b) : a;
}
int arr[20];
int main() {
    int t;
    scanf("%d" , &t);
    while(t--) {
        int n , m;
        ll ans = 0;
        scanf("%d%d" , &n , &m);
        for(int i = 0 ; i < m ; i++) scanf("%d" , &arr[i]);
        for(int i = 1 ; i < (1 << m) ; i++) {
            ll num = 0;
            ll lcm = 1;
            for(int j = 0 ; j < m ; j++) {
                if(i & (1 << j)) {
                    num++;
                    lcm = lcm/gcd(lcm , (ll)arr[j]) * (ll)arr[j];
                    if(lcm > n) break;
                }
            }
            if(num % 2) ans += n / lcm * (1 << (num - 1));
            else ans -= n / lcm * (1 << (num - 1));
        }
        printf("%lld\n" , ans);
    }
    return 0;
}
时间: 2024-08-29 00:01:58

玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题(容斥)的相关文章

“玲珑杯”线上赛 Round #17 河南专场 B.震惊,99%+的中国人都会算错的问题

1138 - 震惊,99%+的中国人都会算错的问题 Time Limit:4s Memory Limit:128MByte Submissions:304Solved:84 DESCRIPTION 众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有NN条咸鱼(标号从1到N)可以被用来制作.每条咸鱼都有一个咸鱼值KiKi,初始时所有KiKi都是00.zhu是一个特别的人,他有MM个咸数(咸鱼数字), 对于每个咸数xx,他都会让所有满足标

玲珑学院 1138 - 震惊,99%+的中国人都会算错的问题

1138 - 震惊,99%+的中国人都会算错的问题 Time Limit:4s Memory Limit:128MByte Submissions:310Solved:87 DESCRIPTION 众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有N 条咸鱼(标号从1到N)可以被用来制作.每条咸鱼都有一个咸鱼值Ki,初始时Ki都是0:zhu是一个特别的人,他又M个咸数(咸鱼数字),对于每个咸数x,他都会满足所有标号是x倍数的咸鱼的咸鱼

99%的房地产企业都会遇到的信息化问题

房地产行业是一个资源密集型.资源整合型.知识密集型的行业,在信息化建设中,强调以核心业务为信息化建设的主线,以客户.产品.资金和知识为核心,关注房地产企业在项目开发.营销.资金管理.成本管理等.简而言之,就是依据企业自身的特点,选择适合的信息化系统.所以最终的情况是,房地产企业的信息化系统由很多厂家.很多类型的系统构成,外观不一样,数据结构不一样等等各种差别,真真正正的百花齐放. 帆软传说哥早些时间接触到的一个房地产A企业也是按照以上方式建设信息化的,他们还好一些,当前运行的主要是明源的各个系统

大部分人都会做错的经典JS闭包面试题

大部分人都会做错的经典JS闭包面试题 目录 由工作中演变而来的面试题 JS中有几种函数 创建函数的几种方式 三个fun函数的关系是什么? 函数作用域链的问题 到底在调用哪个函数? 后话 由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,

经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解

重新看js闭包的时候看到了<大部分人都会做错的经典JS闭包面试题>,自己理解并记录了下想法.很多部分博主已经讲得很详细了,只是后面的解释部分文字有点绕. 原帖地址:http://web.jobbole.com/84328/ 先贴代码 1 function fun(n,o){ 2 console.log(o); 3 return { 4 fun:function(m){ 5 return fun(m,n); 6 } 7 } 8 } 9 10 var a = fun(0); 11 a.fun(1)

这道js面试题号称99%的人会做错

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="app/js/jquery-2.1.4.js"></script> <script type="text/javascript&

【转载】大部分人都会做错的经典JS闭包面试题

原文链接http://www.cnblogs.com/xxcanghai/p/4991870.html function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,? var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,

“玲珑杯”线上赛 Round #17 河南专场

闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯"线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06-24 14:30:00 Refresh Time:2017-06-24 14:48:00 Private A -- Sin your life Time Limit:1s Memory Limit:128MByte Submissions:529Solved:76 DESCRIPTION 给一个正

现场DCS仪表清零后报表每小时用量的SQL处理方法(列转行)

最近我在做项目的时候,在现场碰到客户煤气仪表每天累积量达到几百万,一个月累计下来表的度数就要超出仪表的上限,所以客户每个月25号必须进行一次清零.这样仪表的度数就重新从零开始计算.在统计每小时煤气产量的时候,现场如果是手工抄数就不要紧,只需要做一下简单的公式计算即可 [产量]=[清零时表的读数]-[上个整点读数]+[当前点清零后的读数]即可.但是对于一个软件系统来说,没有人的大脑进行干预可就没有那么简单,他需要知道仪表是否清零,得知道什么时候清的零,还需要知道清零时候的读数.知道这三点才能提供软