Day5

     今天,我很开心,because过了今天福州之行就过了一半了,开个玩笑。(秒严肃)今天我们学了数论(我天,表示我一脸懵逼),好吧,我觉得它有点抽象,感觉和数学没什么区别,举几个例子:
NO.1 
  n= a1 a2 a3...an
    p1 p2 p3...pn
  m= b1 b2 b3...bn
    p1 p2 p3...pn
  (最大公约数)gcd(m,n)= min(a1,b1) min(a2,b2) ...min(an,bn)(中间省略乘号)
                       p1         p2         ...pn
  (最小公倍数)lcm(m,n) max(a1,b1) max(a2,b2)...max(an,bn)(中间省略乘号)
                       p1         p2            pn
NO.2
  若a%m=1且b%m=1则我们说a≡b(mod m)
  a1≡a2;
  b1≡b2;
  a1+(-)b1≡a2+(-)b2;
  a1b1≡a2b2;
今天考题如下:
NO.1
 数字游戏
 题目大意:给定一个正整数n,求最大的整数x,使得n<x,且f(x) =f(n)−1,其中f(n)为n的各个位上数码之和,比如f(1234) =1 + 2 + 3 + 4 = 10。
 分析:经过多次实验可知,这题只需将n的最低非零位-1即可看,但是,如果是10的幂,则输出0,具体可以用数组来实现。代码如下:
#include <bits/stdc++.h>
using namespace std;
string n;
int l,sum=0;
bool f;//判断是否找到并减1
int main()
{
 //freopen("numgame1.in","r",stdin);
 //freopen("numgame1.out","w",stdout);
 cin>>n;//先读入第一个数
 while (n!="END")判断是否是结束的标志
 {
  f=false;
  sum=0;
  int k=1;
  l=n.size();
  for (int i=l-1;i>=0;i--) {
      if (n[i]>'0'&&!f) //从高位寻找最后一个非零位
                    {
         n[i]--;//按题意减1
         f=true;//标志为找到
      }
      sum=int(n[i]-48)*k+sum;//转成数字存储
      k=k*10;
     }
     cout<<sum<<endl;
     cin>>n;
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}
NO.2
 石子游戏
 题目大意:现在有一堆共n个石子,小a和小b两人轮流从中取石子(小a先取),取到最后一个石子的人获胜。但游戏不可能这么简单,所以有一个限制,
每个人每次只能从中取1个或者质数个石子,显然每次取出的石子个数不能超过当前堆中的石子个数。给定n,判断谁有必胜策略。
 分析:可以先通过打表,然后你就会发现,这里的1,2,3都是不可取的,所以我们不妨用模4来分类。接下来,注意到不能取走4的倍数个石子,并且可以取走模4余1,2,3个石子,那么显然石子数是4的倍数时,小b必胜,否则小a必胜。
 代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
 //freopen("stone.in","r",stdin);
 //freopen("stone.out","w",stdout);
 int n;
 cin>>n;
 int a;
 for (int i=1;i<=n;i++)
 {
  cin>>a;
  if (a%4==0) cout<<"B"<<endl;
   else cout<<"A"<<endl;
 }
 //fclose(stdin);
 //fclose(stdout);
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值