第三天 补题

题目来源 牛客

在这里插入图片描述

输入

2
2
64
输出

2
3

说明
64可以被2整除,64“瘦身”一次后得到的10也可以被2整除,但将64“瘦身”两次后得到1不可以被2整除。而64,10,1都不能被3整除。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

string l;
bool judge(int p){
	int d=0;
	for(int i=0;i<l.size();i++){
		d=d*10+l[i]-'0';
		d%=p;
	}
	return d==0;
}
int main() {
	int n;cin>>n;
	while(n--){
		cin>>l;
		if(l.size()==1) printf("2\n");
		else{
			vector<int>v;
			int now=0;
			for(int i=0;i<l.size();i++){
				now+=l[i]-'0';
			}
			v.push_back(now);
			while(now>=10){
				int tp=0;
				while(now) tp+=now%10,now/=10;
				v.push_back(tp);
				now=tp;
			}//至此 所有这些数都在动态数组里了 
			
			int ans;
			for(int i=2;;i++){
				int f=judge(i);
				int ff=1;
				for(int j=0;j<v.size();j++) 
					//*******************
					if((v[j]%i==0)!=f){//这步是最关键的
						ff=0;break;
					}  
					//********************
				if(ff) {
					ans=i; break;
				} 
			}
			printf("%d\n",ans);
		}
	}
	return 0;
}

要进行每个数的两两对比 因为题意是都能被整除或者都不能被整除的最小数m,如果中间有与其相反的结果那么说明不能用这个m,m++试试,m即这里的i。

②乘车上学

在这里插入图片描述

输入

10 10

输出

10.00

说明
公交车一定是每10分钟到达一辆,到达时就会接走所有等车的乘客。那么公交车到达时一定会有10个人在等车,因为距离上一班公交车过去了10分钟,在这10分钟里来了10位乘客。

啊啊啊这道题还蛮…说难其实也不难,说不难但是自己写写不出
想不到啊 哎…思维不够 刷题来凑
这个详细的讲解还蛮好的
http://www.duodaa.com/blog/index.php/archives/2080/

预防以后失效 也截个图吧
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
学习了一波之后 大概就能理解了。
当然实际的代码其实就只是这样…比赛时看了1个多小时都没看出来…

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
using namespace std;
#define pb push_back
typedef long long ll;
//const int maxn=;


double a,b;
int main(){
	cin>>a>>b;
	printf("%.2f\n",a*a/(a+b)+b*b/(a+b));
	return 0;
}

今天也先到这里 欠的债多了~慢慢补吧 2019.12.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值