问题标题: 酷町堂:60豆 在 明天 9:30 前采纳 前五个中回答的最好的-----周期(下):周期应用题

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

周期应用题 的预习材料

60豆 在 明天 9:30 前采纳 前五个中回答的最好的。


0
已采纳
王泽宇
王泽宇
初级光能
初级光能

这是我的讲义,求采纳

王泽宇在2020-07-28 16:16:12追加了内容

还有这个

王泽宇在2020-07-28 17:38:43追加了内容

 

一、课堂知识

1. 周期行动可以被预测

       如果一个行为是周期的,那么我们总能预测在第几个时刻或第几次或发生某事。
       比如:四季的更替是周期的,春季的下一个季度总是夏季,从春季往后推四个季度还是春季 ……

2. 使用模运算确定第i次要做的事对应周期内的哪一件事

       假如一个周期有7秒,每秒会发生一件事,那么一个周期会发生7件事,而后续会不断重复这7件事。
       如果恰好从第一秒开始做周期内的第一件事,则在第i秒做的事我们可以预测,对应周期内的第i%7件事(如果i%7等于0,则对应的是第7件事)。

二、课堂练习详解

1482 狐狸追兔子

思路解析

洞口一共10个,狐狸跑过第10个洞口之后要回到第1个洞口继续找,这里我们可以把洞口看成无限多个,但是每10个洞(编号1~10)为一周期,无限重复。
每次隔一个洞,隔两个洞,隔三个洞……确定洞口的编号,我们把这个编号模10就能得到它对应几号洞。
由于模10的结果在0~9的范围内,所以我们可以做个小转化,把1~10号洞口对应数字0~9,(模10得到0说明在1号洞,得到1说明在2号洞 ……)

代码实现


 

 

1353 出牌游戏(game)

思路解析

两人按照各自的周期出牌,我们可以预测到在第i次出牌时,两人各出哪张牌(每个人出的牌按各自的周期单独算),所以只要将每一局比赛中两人出的牌相比较,将结果统计起来即可。
注意这里我们输入每个人出的牌时(存数组),可以从下标0开始输入,方便后面模运算“i%周期”直接对应 0~周期-1 的每个数。

代码实现


 

 

3878 周期字符串

思路解析

同上题

代码实现


 

 

 

王泽宇在2020-07-28 17:39:11追加了内容
引言
 
       太阳每天东升西落;钟表上的指针转了一圈又一圈;今天是周日,过了7天之后还是周日 ……
       这些都是日常生活中出现的周期事件。

       你还能想到有哪些周期事件吗?
 

一、课堂知识
1. 周期
事物在运动、变化过程中,某些特征多次重复出现,其连续两次出现所经过的时间叫“周期”。
我们要抓住周期关键的地方,就是重复,隔了多长时间重复出现。

类似0,1,2,3,0,1,2,3,……这种以相同规律多次重复出现的数,我们称这些数具有周期,而连续两次出现之间的间隔就是周期的值。
比如上面的数每4个出现一次相同的数,周期就是4。

2. 周期与模运算
周期问题一般都牵涉到模运算以及数组,我们将一个周期的数据放到数组中,通过模运算来推定第i次要用的是哪一个值。
比如3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,……这一数列,周期是4。
我们可以把3,4,1,2存入数组a[4]中,注意3,4,1分别存入a[1],a[2],a[3]中,而2存入a[0]。
这样第i次会出现的数字就是a[i%4](i如果是4的倍数,那么i%4等于0,所以把第4的倍数次出现的2存入a[0])。

二、课堂练习详解
3881 循环小数
思路解析
该循环小数周期是11,分别是1,4,5,1,2,7,8,5,6,8,9这11个数字循环出现,那么我们可以把这11个数字存入数组a[11]中,注意前10个数字分别赋值给a[1]~a[10],但最后一个9应该赋值给a[0],这样小数点后第n位数字就应该是a[n%11]

代码实现
#include <iostream>
using namespace std;
int a[11]={9,1,4,5,1,2,7,8,5,6,8};
int main()
{
	int n,t;
	cin>>t;
	while(t--)
	{
		cin>>n;
		cout<<a[n%11]<<endl;	
	}
	return 0;
}
 
3886 倒着转的分针
思路解析
首先要清楚分针转一圈是一个小时而不是一分钟。
那么从m点整往前推n小时是几点呢?
我们知道往前推24小时,时间肯定不变,所以可以对n除以24求余数(因为24的整数倍不影响时间变化),也就是m点往前推n%24个小时。
但是要注意的是m-n%24可能会得到负值,所以要判断一下,是负值的话,加上24小时变成正的值。

代码实现
#include<iostream>
using namespace std;

int main(){
    int m,n,t;
    cin>>m>>n;
    t=m-n%24;
    if(t<0) t+=24;
    cout<<t;
    return 0;
} 
 
3878 周期字符串
思路解析
这里字符串的长度是有限的,我们可以通过枚举可能的周期来找到答案(从1枚举到字符串的长度),
从小到大枚举,取找到的第一个周期。
至于判断字符串是否能以某个数i为周期,我们可以利用周期的特性,比如:
方法一: 字符串中下标模i同余的字符应该都是相等的;
方法二: 截取前i个字符,然后不断重复构成另一个字符串,再与原字符串比较。

代码实现
方法一:

#include <iostream>
#include <string>
using namespace std;
string s;
bool check(int x){
    if(s.size()%x!=0) return false;
    for(int i=0;i<s.size();i++){
        if(s[i]!=s[i%x]) return false;
    }
    return true;
}
int main(){
    cin>>s;
    for(int i=1;i<=s.size();i++){  //枚举周期 
        if(check(i)){  //检查是否能以i为周期,输出最小的周期 
            cout<<i;
            break;
        } 
    }
    return 0;
}
 
方法二:

#include <iostream>
#include <string>
using namespace std;
string s;
bool check(int x){
    if(s.size()%x!=0) return false;
    string t="";
    for(int i=1;i<=s.size()/x;i++){
        t+=s.substr(0,x);
    }
    if(s==t) return true;
    else return false;
}
int main(){
    cin>>s;
    for(int i=1;i<=s.size();i++){  //枚举周期 
        if(check(i)){  //输出最小的满足条件的周期 
            cout<<i;
            break;
        } 
    }
    return 0;
}
 

 

王泽宇在2020-07-28 17:39:33追加了内容

第一个的重发一遍

王泽宇在2020-07-28 17:40:01追加了内容
引言
 
       哈雷彗星总能被预测在哪一年会靠近地球,因为它做的是周期运动,大约每76.1年环绕太阳一周,当它靠近地球的时候就能被人们用肉眼看到。

 

一、课堂知识
1. 周期行动可以被预测
       如果一个行为是周期的,那么我们总能预测在第几个时刻或第几次或发生某事。
       比如:四季的更替是周期的,春季的下一个季度总是夏季,从春季往后推四个季度还是春季 ……

2. 使用模运算确定第i次要做的事对应周期内的哪一件事
       假如一个周期有7秒,每秒会发生一件事,那么一个周期会发生7件事,而后续会不断重复这7件事。
       如果恰好从第一秒开始做周期内的第一件事,则在第i秒做的事我们可以预测,对应周期内的第i%7件事(如果i%7等于0,则对应的是第7件事)。

二、课堂练习详解
1482 狐狸追兔子
思路解析
洞口一共10个,狐狸跑过第10个洞口之后要回到第1个洞口继续找,这里我们可以把洞口看成无限多个,但是每10个洞(编号1~10)为一周期,无限重复。
每次隔一个洞,隔两个洞,隔三个洞……确定洞口的编号,我们把这个编号模10就能得到它对应几号洞。
由于模10的结果在0~9的范围内,所以我们可以做个小转化,把1~10号洞口对应数字0~9,(模10得到0说明在1号洞,得到1说明在2号洞 ……)

代码实现
#include <iostream>
using namespace std;
int a[10],cnt=9;  //a[0]~a[9]分别表示进1~10号洞的次数,cnt=9出发点在10号洞 

int main(){
    for(int i=1;i<=1000;i++){
	cnt=(cnt+i)%10;
	a[cnt]++;
    }
    for(int i=0;i<=9;i++){  //枚举a[0]~a[9](1到10号洞)
	if(a[i]==0){  //表示i+1号洞没进过 
	    cout<<i+1; 
        }
    }
    return 0;
}
 
1353 出牌游戏(game)
思路解析
两人按照各自的周期出牌,我们可以预测到在第i次出牌时,两人各出哪张牌(每个人出的牌按各自的周期单独算),所以只要将每一局比赛中两人出的牌相比较,将结果统计起来即可。
注意这里我们输入每个人出的牌时(存数组),可以从下标0开始输入,方便后面模运算“i%周期”直接对应 0~周期-1 的每个数。

代码实现
#include<iostream>
using namespace std;

int pk(int a,int b)
{
    if(a==b-1 || (a==4&&b==1)) return 1;  //A赢
    if(a==b+1 || (a==1&&b==4)) return -1; //B赢
    else return 0;  //平局
}

int main()
{
    int n,na,nb,a[101],b[101],A=0,B=0;  //A:统计A赢的局数  B:统计B赢的局数
    cin>>n>>na>>nb;
    for(int i=0;i<na;i++) cin>>a[i];
    for(int i=0;i<nb;i++) cin>>b[i];
    for(int i=0;i<n;i++){
        if(pk(a[i%na],b[i%nb])==1) A++;
        else if(pk(a[i%na],b[i%nb])==-1) B++;
    }
    if(A>B) cout<<"A";
    else if(A<B) cout<<"B";
    else cout<<"D";	
    return 0;
}
 
3878 周期字符串
思路解析
同上题

代码实现
#include<iostream>
using namespace std;

int pk(int a, int b) {//两个人出拳
    if(a==1&&b==3 || a==2&&b==1 || a==3&&b=2) return 1;  //A赢
    if(a==3&&b==1 || a==1&&b==2 || a==2&&b==3) return -1; //B贏
    return 0;  //平局
}


int main()
{
    int n,na,nb,a[101],b[101],A=0,B=0;  //A:统计A赢的局数  B:统计B赢的局数
    cin>>n>>na>>nb;
    for(int i=0;i<na;i++) cin>>a[i];
    for(int i=0;i<nb;i++) cin>>b[i];
    for(int i=0;i<n;i++){
        if(pk(a[i%na],b[i%nb])==1) A++;
        else if(pk(a[i%na],b[i%nb])==-1) B++;
    }
    if(A>B) cout<<"A";
    else if(A<B) cout<<"B";
    else cout<<"D";	
    return 0;
}
 

 

王泽宇在2020-07-28 17:42:35追加了内容

我这是创新班讲义,你应该看不到网址的类容

王泽宇在2020-07-28 22:17:28追加了内容

求采纳

first boold

0
刘英杰
刘英杰
新手天翼
新手天翼

周期不用预习,简单的一批(狗头保命)

开玩笑的

【以下为刘英杰原创内容】

周期问题很简单

其主旨就是对事物循环出现的客观规律进行模拟

比如说,一行棋子,一个白子,一个黑子,一个白子,一个黑子……

然后再根据题目的不同情况进行分别处理

比如,你们很熟悉的题型

有87个灯笼按照一个蓝灯笼,两个红灯笼,三个黄灯笼的顺序排列,请问,最后一个是什么颜色的灯笼?

分析:这属于典型的周期问题,由题可得,六个灯笼为一个周期循环,所以结合总的灯笼数量可以得出最后一个灯笼的颜色

解:

周期:1+2+3=6(个)

最后在周期外的:87%6=3(个)

∵周期外的有三个,而周期的第三个为红色灯笼

∴所以最后一个是红色灯笼

 

接下来,对于计算机来说,周期问题本质就是模拟问题

比如,某些周期问题,需要通过找出序列的规律来解决

某些周期问题,需要模拟每个周期对应的情况,找出解

……

PS:不论我的回答怎样,不要采纳,我不是为了酷町豆而来的

0
柯以成
柯以成
新手光能
新手光能

讲义可以看一下,

完成一次振动所需要的时间,称为振动的周期。

数学周期数学周期

若f(x)为周期函数,则把使得f(x+l)=f(x)对定义域中的任何x都成立的最小正数l,称为f(x)的(基本)周期。

在计算机中,完成一个循环所需要的时间;或访问一次存储器所需要的时间,亦称为周期 [4]  。周期函数的实质:两个自变量值整体的差等于周期的倍数时,两个自变量值整体的函数值相等。如:f(x+6) =f(x-2)则函数周期为T=8。

1. 元素周期表中元素的一种分类。具有相同电子层数的一系列元素按原子序数递增顺序排列的一个横行为一

化学周期

化学周期(2张)

个周期。同周期元素从左到右,金属性逐渐减弱,非金属性逐渐增强。

2. 指具有相同的电子层数并按照原子序数递增的顺序排列的一系列元素。周期表中共有七个横行,也就是七个周期。第1周期(只含2种元素),称特短周期;第2、3周期(各含8种元素)称短周期;第4、5周期(各含18种元素)称长周期;第6、7周期(含32种元素),第7周期(尚未全部发现)称特长周期。也有将第1、2、3周期称短周期,第4、5、6、7周期称长周期的 [3]  。

1. 匀速圆周运动是一种周期性运动,周期性指运动物体经过一定时间后又重复回到原来的位置,瞬时速度重复回到原来的大小和方向。做匀速圆周运动的物体运动一周所用的时间叫做周期。

周期也是描述匀速圆周运动快慢的物理量,周期长说明物体运动的慢,周期短说明物体运动的快。

2. 物体作往复运动或物理量作周而复始的变化时,重复一次所经历的时间。物体或物理量(如交变电流、电压等)完成一次振动(或振荡)所经历的时间。在各种周期运动或周期变化中,物体或物理量从任一状态开始发生变化,经过一个周期或周期的整数倍时间后,总是回复到开始的状态。

3. 交流电完成一次完整的变化所需要的时间叫做周期,常用T表示。周期的单位是秒(s),也常用毫秒(ms)或微秒(μs)做单位。

具体可以上百度看看

求采纳我!!!!!

0
张天璨
张天璨
新手天翼
新手天翼

抱歉,本弱鸡还没上到周期。望大佬多多担待!

我要回答