K-Multiple Free set UVA-11246 (容斥原理)

Posted weilinfox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-Multiple Free set UVA-11246 (容斥原理)相关的知识,希望对你有一定的参考价值。

vjudge链接

原题链接

  • 题目大意

1~n 中找到一个最大的集合,使集合中不存在 a,b 两数,使 a*k==b。输出该集合中元素的数量。

  • 分析

只需输出元素的个数,故无需得到每个元素确切的值,只需模拟删除过程并统计数量即可。

容斥原理。首先删除所有 k 的倍数,元素个数变为 n/k ,显然 k^2 的倍数被多删除了一遍,故需要将 k^2 的倍数( n/k^2 个)重新加回,结果 k^3 的倍数又被多加回了一遍,又要减去 n/k^3 个…… 如此循环,直到没有多加和多减。

/*
 *lang C++ 5.3.0
 *user Weilin_C
 */

#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cctype>

using namespace std;

int main()
{
    int num;
    int n, k;

    scanf("%d", &num);
    while (num--) {
        scanf("%d%d", &n, &k);
        int ans=n, pans=n/k, flag=-1;
        while (pans>0) {
            ans+=flag*pans;
            flag=-flag;
            pans/=k;
        }
        printf("%d
", ans);
    }

    return 0;
}

by SDUST weilinfox
原文链接:https://www.cnblogs.com/weilinfox/p/12261580.html

以上是关于K-Multiple Free set UVA-11246 (容斥原理)的主要内容,如果未能解决你的问题,请参考以下文章

malloc: *** error for object 0x6080000bd200: Invalid pointer dequeued from free list *** set a break

andorid storage tatal and free

无锁编程:lock-free原理;CAS;ABA问题

何时调用 mysql_free_result (Resuing mysql_store_result, MYSQL_RES)

TBB concurrent_set 没有erase

uni-app 98修改群名称功能