UVA数学入门训练Round1[6]
UVA - 11388 |
题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小
g不能整除l时无解,否则一定g,l最小
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- typedef long long ll;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int T,g,l;
- int main(int argc, const char * argv[]){
- T=read();
- while(T--){
- g=read();l=read();
- if(l%g) printf("-1\n");
- else printf("%d %d\n",g,l);
- }
- return ;
- }
PS:Luogup1029求数量的话可以依据a*b=g*l枚举
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- ll g,l;
- int cnt=;
- inline int gcd(int a,int b){
- return b==?a:gcd(b,a%b);
- }
- int main(int argc, const char * argv[]) {
- g=read();l=read();
- ll n=g*l;
- for(ll i=g;i<=l;i++){
- if(n%i) continue;
- ll j=n/i;
- if(gcd(i,j)==g) cnt++;
- }
- printf("%d",cnt);
- return ;
- }
UVA - 11889 |
题意:输入A和C,求最小的B使lcm(A,B)=C
用唯一分解定理想
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- typedef long long ll;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int a,l,T;
- inline int gcd(int a,int b){return b==?a:gcd(b,a%b);}
- int main(int argc, const char * argv[]) {
- T=read();
- while(T--){
- a=read();l=read();
- if(l%a) printf("NO SOLUTION\n");
- else{
- int b=l/a,g=gcd(a,b),t=;
- while(g!=){
- t*=g;
- a/=g;
- g=gcd(a,b);
- }
- printf("%d\n",b*t);
- }
- }
- return ;
- }
UVA - 10943 |
题意:k个不超过n的非负整数加起来和为n有几种方案
完全背包
f[i][j]表示i个数加起来和为j
转移可以从O(n)变O(1)
可以是f[i-1][j]+0,也可以是f[i][j-1]+1
- f[i][j]=(f[i-1][j]+f[i][j-1])%MOD;
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- const int N=,MOD=1e6;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int n,m,f[N][N];
- void dp(){
- for(int i=;i<=;i++) f[i][]=;
- for(int i=;i<=;i++)
- for(int j=;j<=;j++)
- f[i][j]=(f[i-][j]+f[i][j-])%MOD;
- }
- int main(int argc, const char * argv[]) {
- dp();
- while((n=read())){
- m=read();
- printf("%d\n",f[m][n]);
- }
- return ;
- }
UVA - 10791 |
题意:输入n,求至少两个正整数,使lcm=n
唯一分解定理分解后就是最优解,注意素数
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- typedef long long ll;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int n;
- ll sol(int n){
- if(n==) return ;
- int cnt=,m=sqrt(n)+;
- ll ans=;
- for(int i=;i<=m&&n!=;i++) if(n%i==){
- cnt++;
- ll d=;
- while(n%i==) n/=i,d*=i;
- ans+=d;
- }
- if(n>) cnt++,ans+=n;
- if(cnt==) return ans+;
- else return ans;
- }
- int main(int argc, const char * argv[]) {
- int cas=;
- while(scanf("%d",&n)!=EOF&&n){
- printf("Case %d: %lld\n",++cas,sol(n));
- }
- return ;
- }
UVA - 10780 |
题意: 输入n和m,求最大的k使m^k整除n!
唯一分解定理裸
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- const int N=1e4+;
- typedef long long ll;
- inline int read(){
- char c=getchar();int x=,f=;
- while(c<''||c>''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int T,m,n,e1[N],e2[N],p[N],vis[N],cnt=;
- void era(int n){
- int m=sqrt(n)+;
- for(int i=;i<=m;i++) if(!vis[i])
- for(int j=i*i;j<=n;j+=i) vis[j]=;
- for(int i=;i<=n;i++) if(!vis[i]) p[++cnt]=i;
- }
- void divide(int n,int e[]){
- for(int i=;i<=cnt&&n!=;i++) if(n%p[i]==){
- int d=;
- while(n%p[i]==) n/=p[i],d++;
- e[i]+=d;
- }
- }
- int main(int argc, const char * argv[]){
- era();
- T=read();int cas=;
- while(T--){
- printf("Case %d:\n",++cas);
- memset(e1,,sizeof(e1));
- memset(e2,,sizeof(e2));
- m=read();n=read();
- divide(m,e1);
- for(int i=;i<=n;i++) divide(i,e2);
- int flag=,k=,len=max(m,n);
- for(int i=;i<=len;i++){//printf("%d %d %d\n",p[i],e1[i],e2[i]);
- if(e1[i]>e2[i]){flag=;printf("Impossible to divide\n");break;}
- if(e2[i]!=&&e1[i]!=) k=min(k,e2[i]/e1[i]);
- }
- if(!flag) printf("%d\n",k);
- }
- return ;
- }
UVA数学入门训练Round1[6]的更多相关文章
- 入门训练 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时, ...
- 蓝桥杯 入门训练 Fibonacci数列(水题,斐波那契数列)
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非 ...
- 入门训练 A+B问题
http://lx.lanqiao.org/problemset.page?code=BEGIN-&userid=34549 入门训练 A+B问题 时间限制:1.0s 内存限制:2 ...
- 蓝桥杯 入门训练 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. ...
- 【蓝桥杯】入门训练 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. ...
- 入门训练 Fibonacci数列 (水题)
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n ...
- lqb 入门训练 A+B问题
入门训练 A+B问题 时间限制:1.0s 内存限制:256.0MB 问题描述 输入A.B,输出A+B. 说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标. 输入格式 输入的第 ...
- lqb 入门训练 序列求和 (PS:用长整数做数据的输入输出)
入门训练 序列求和 时间限制:1.0s 内存限制:256.0MB 问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3 ...
- lqb 入门训练 圆的面积 (PS: PI的精确计算方法 atan(1.0) * 4)
入门训练 圆的面积 时间限制:1.0s 内存限制:256.0MB 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四 ...
随机推荐
- 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog
[源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...
- Git合并分支操作
1. 添加自己的文件 git add .; 2. 缓存自己的文件 git stash; 3. 查看状态 git status; 4. 获取别的分支 git pull origin master(分支名 ...
- 疯狂Android讲义 - 学习笔记(八)
第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的 ...
- Verilog学习笔记基本语法篇(十二)········ 编译预处理
h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...
- 使用MyEclipse 开发struts2框架结构详细教程——以登录为例
1.首先建立Web Project,名称为:struts2 ,然后选择Java EE6.0,点击Finish. 2.右击“struts”选择MyEclipse->Add Struts Capab ...
- Javascript 创建对象方法的总结
最近看了一下<Javascript高级程序设计(第三版)>,这本书很多人都推荐,我也再次郑重推荐一下.看过之后总得总结一下吧,于是我选了这么一个主题分享给大家. 使用Javascript创 ...
- 几款开源的hybird移动app框架分析
几款开源的Hybrid移动app框架分析 Ionic Onsen UI 与 ionic 相比 jQuery Mobile Mobile Angular UI 结论 很多移动开发者喜欢使用原生代码开发, ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十七】
<Web 前端开发精华文章推荐>2013年第五期(总第十七期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- 使用hexo搭建属于自己的博客
如果你喜欢拥有自己的博客域名,如果你喜欢折腾,可以先点击luckykun.com,看看效果,再选择要不要进来看看--- 之前一直都在博客园写博客,不过最近在逛园子的时候不小心看到了hexo,简直有种相 ...
- jQuery构造函数init参数分析(一)
在我的上一篇随笔里面分析了jQuery的构造函数,jQuery对象中有一个原型方法init才是是真正的构造函数,通过init的原型对象跟jQuery的原型对象保持引用关系使得init的实例可以正常调用 ...