E. You

首先我们假设每个节点有个点权,点权是儿子的数量。

一个点可以和他的父亲所要权值1(先删去自己,再删去父亲),并且此操作不可逆。于是dfs从叶子节点一次递推即可得出某个kkk是否能作为gcd⁡\gcdgcd。

由于上述“权值交换”的过程只会变化1,并且权值和一定是n-1,只需要枚举n-1的约数一一dfs递推判断即可。

注意:最后需要容斥一下重复计算的情况
upd:我们在dfs时并没有直接考虑gcd⁡\gcdgcd,而是通过考虑点权是否是gcd⁡\gcdgcd的倍数,显然如果一个是6的倍数,自然也是2的倍数,但gcd要求我们是最大公约数,所以由于2的答案是依附于6的基础上,需要减去。

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template <class T=int> T rd()
{T res=0;T fg=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') fg=-1;ch=getchar();}while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res*fg;
}
const int N=100010,mod=998244353;vector<int> g[N];
int a[N],n;
ll ans[N];
bool dfs(int u,int fa,int val)
{for(auto v:g[u]){if(v==fa) continue;if(!dfs(v,u,val)) return 0;}if(a[u]%val==0){if(fa) a[fa]++;return 1;}if((a[u]+1)%val==0&&fa) return 1;return 0;
}
void init()
{for(int i=1;i<=n;i++) ans[i]=0;for(int i=1;i<=n;i++) a[i]=0;for(int i=1;i<=n;i++) g[i].clear();
}
int main()
{int Tc=rd();while(Tc--){init();n=rd();for(int i=1;i<n;i++){int u=rd(),v=rd();g[u].push_back(v);g[v].push_back(u);}for(int i=1;i<n;i++)if((n-1)%i==0){if(i==1) {ans[1]=1;for(int i=1;i<n;i++) ans[1]=ans[1]*2%mod;continue;}for(int i=1;i<=n;i++) a[i]=0;if(dfs(1,0,i)) ans[i]++;}for(int i=n;i>=1;i--)for(int j=2;i*j<=n;j++)ans[i]=(ans[i]-ans[i*j]+mod)%mod;for(int i=1;i<=n;i++) printf("%lld%c",ans[i]," \n"[i==n]);}return 0;
}

codeforces1554 E. You(思维+数学+转化)相关推荐

  1. c语言小红今年12岁小明13岁,[转载]三年级下“创新思维数学讲义”——年龄问题...

    三年级下"创新思维数学讲义"-- 年龄问题 邵 玲 热身场 相传,乾隆皇帝下江南时,遇到了一位老寿星.老人鹤发童颜,精神焕发,乾隆皇帝当即赠一上联给老人,写的是:"花甲重 ...

  2. #(三)、波向二维的数学转化

    现在还是回到股市这个波的海洋中徜徉. 在水里面扔一块石头,会产生向外扩散的同心圆式样.并逐渐衰竭的波.扔了无数块石头,会有众多的这样的波发生干涉,形成混乱的波动.这就是股市并不十分准确的用机械波拟合的 ...

  3. nowcoder_A_放羊的贝贝_思维+数学

    nowcoder_A_放羊的贝贝_思维+数学 放羊的贝贝​​​​​​​ 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO For ...

  4. 知识图谱数据库将人类的思维路径转化为机器的路径思维

    网络用图,出处不明 前段时间被沙特阿拉伯授予公民身份的人形机器人"索菲亚",再一次颠覆了人们对人工智能技术的认知. "索菲亚"多次与人类交锋并公开发表言论的过程 ...

  5. 牛客网多校第9场 E Music Game 【思维+数学期望】

    题目:戳这里 题意:鼠标点击n下,第i次点击成功的概率为p[i],连续点击成功x次可以获得x^m分,求n次点击总分数的数学期望. 解题思路:数学期望的题很多都需要转化思维,求某一个单独状态对整体答案的 ...

  6. 语言兔子繁衍问题讲解_二年级思维数学:位置问题,找到重复部分是解题关键...

    [思维策略] 同学们排队,以某一个人为标准来数人数,知道他左边.右边人数或从左.从右数他排第几,这类问题就是排队问题,排队问题的关键是要找出重复部分再解答. 在排队问题中,中间这一个人既不能漏掉,也不 ...

  7. 计算思维就是指计算机程序 即计算机的思维,[数学思维在计算机程序设计中的体现]计算机思维的本质是指...

    摘要: 探讨了利用数学知识解决程序设计问题,具体通过QBASIC语言中文本作图来分析,找出文本图形的共性方面,运用数学知识总结出图形的变化与这些变量之间的关系.结论表明通过学科之间的联系,特别是运用数 ...

  8. 数理思维——数学运算

    三大方法:代入排除法.数字特征法.方程法 六大题型:工程问题.行程问题.经济利润.高频几何问题.容斥原理.排列组合与概率 第一节:代入排除法 一.什么时候用: ①特定题型:年龄.余数.不定方程(方程个 ...

  9. CodeForces - 364A Matrix(思维+数学)

    题目链接:点击查看 题目大意:给出一个长度为 n 的,只由十进制数字组成的字符串 s,可以构造出一个大小为 n * n 的矩阵,构造方法如下:b[ i ][ j ] = s[ i ] * s[ j ] ...

最新文章

  1. 将Numpy加速700倍——CuPy
  2. PaddlePaddle yolov3
  3. python软件怎么用-用Python如何打出你的第一个程序
  4. 关于点击率模型,你知道这三点就够
  5. html diy文本几秒后关闭,利用HTML优化加快网页速度
  6. 什么是ActiveMQ?
  7. PHPmysqli的 预处理执行查询语句
  8. 在8080端口输出php的输出,端口8080上的PHP错误
  9. Android 更加开放了!
  10. Android编译环境——VMware虚拟机安装配置
  11. 使用C语言在windows下一口气打开一批网页
  12. android 开发种子文件,IT之家学院:如何制作种子文件和磁力链接
  13. 计算机管理员英文是什么,超级管理员,超级管理员是什么,超级管理员英文 | 帮助信息-动天数据...
  14. 【大数据处理技术】实验7(推荐林子雨老师的教程)
  15. 凭什么CTO、技术总监、架构师都不写代码,还一天天牛逼哄哄的?
  16. 帝国php漏洞,帝国cms远程代码执行漏洞-1
  17. egret实现微信排行榜功能 (2018-8-20)
  18. 【微服务】165:导入数据到索引库
  19. 你所不知的角落,有人在做没有深度学习的AI
  20. linux内核与Linux发行版本区别

热门文章

  1. java 接口的静态方法_Java8新特性:接口的默认方法与接口的静态方法
  2. 机器人J中WPR_优傲:协作机器人的未来在哪里?
  3. 计算机基础知识 pdf答案,计算机基础知识练习 答案版.pdf
  4. java 连接池连接mysql数据库需要哪些jar包_DBCP-基于Java8导入DBCP连接池所需JAR包并编写DBCPUtils工具类...
  5. 机器学习之乳腺癌问题(SVM)
  6. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come
  7. Java当中包装类的理解和一些常用方法的分享(学习后分享)
  8. Pseudoprime numbers POJ - 3641(快速幂+判素数)
  9. win7如何将计算机移至桌面,如何将win7电脑桌面的文件转移到其他盘中?
  10. java解压中文乱码_java使用解压zip文件,文件名乱码解决方案