zoukankan      html  css  js  c++  java
  • 【数论】2016中国大学生程序设计竞赛

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5832


     题意:两个星球,一个星球一年只有137天,一个星球一年只有73天

    输入N(爆炸后第N天),判断这是否为这两个星球的第一天

    只要这个数是137与73的公倍数就好了(0比较特殊)

    坑点:N的长度不超过10000000

    只能用字符串来存储

    大整数整除:紫书P314

    大整数整除:首先把大整数写成“自左向右”的形式:1234 = (((1*10)+2)*10+3)*10+4

          然后每步取模

    代码

    1 char n[10000010];
    2 int m;
    3 scanf("%s %d",n,&m);   // n 存储大整数 
    4 int len = strlen(n);
    5 int ans = 0;
    6 for(int i = 0;i < len;i++)
    7      ans = (int)(((long long)ans*10+n[i]-'0')%m);         
    8 printf("%d
    ",ans);

    代码:

     1 #include <string>
     2 #include <cstdio>
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 const int m = 137*73;
     8 char n[10000010];
     9 int main()
    10 {
    11     int ca = 1;
    12     while(~scanf("%s",n))
    13     {
    14         int ans = 0;
    15         int len = strlen(n);
    16         for(int i = 0;i < len;i++)
    17             ans = (int)(((long long)ans*10+n[i]-'0')%m);
    18         if(ans == 0)
    19             printf("Case #%d: YES
    ",ca++);
    20         else
    21             printf("Case #%d: NO
    ",ca++);
    22     }
    23     
    24     return 0;
    25 }
    文章搬运自我的个人博客http://duny31030.top 原博客为静态博客,因备份丢失无法继续更新,所以又搬运回博客园,可能部分文章阅读体验不好,可以到我的静态博客搜索相同标题查看
  • 相关阅读:
    文件的权限
    正则表达式
    软硬链接的学习
    linux系统中的文件类型和扩展名
    把数组排成最小的数
    整数中1出现的次数(从1到n整数中1出现的次数)
    最小的K个数
    连续子数组的最大和
    数组中出现次数超过一半的数字
    字符串的排列
  • 原文地址:https://www.cnblogs.com/duny31030/p/8835378.html
Copyright © 2011-2022 走看看