hdu5062 简单题
生活随笔
收集整理的這篇文章主要介紹了
hdu5062 简单题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意:
? ? ? 求區(qū)間逆序數(shù)的個數(shù),逆序數(shù)增加了個要求就是必須要是先升序在降序例如12321或者123321這樣的.
思路:
? ? ? ?水題直接寫就行了,數(shù)據(jù)范圍不大,估計直接求也不會超時,我看見詢問只有7種情況,直接打表了,下面給出打表代碼和ac代碼。
打表
#include<stdio.h>
#include<string.h>
int jude(int now)
{
? ?int num[10] ,nowid = 0;
? ?while(now)
? ?{
? ? ? num[++nowid] = now % 10;
? ? ? now /= 10;
? ?}
? ?int tt = nowid / 2 + nowid % 2;
? ?for(int i = 1 ;i < tt ;i ++)
? ?if(num[i] >= num[i+1]) return 0;
? ?for(int i = 1 ;i <= nowid / 2 ;i ++)
? ?if(num[i] != num[nowid-i+1]) return 0;
? ?return 1;
}
int main ()
{
? ? int sum[8];
? ? memset(sum ,0 ,sizeof(sum));
? ? sum[0] = 1;
? ? for(int i = 1 ;i <= 1000000 ;i ++)
? ? {
? ? ? ? ?int now = jude(i);
? ? ? ? ?if(now && i <= 1000) printf("%d*\n" ,i);
? ? ? ? ?if(i <= 10) sum[1] += now;
? ? ? ? ?if(i <= 100) sum[2] += now;
? ? ? ? ?if(i <= 1000) sum[3] += now;
? ? ? ? ?if(i <= 10000) sum[4] += now;
? ? ? ? ?if(i <= 100000) sum[5] += now;
? ? ? ? ?if(i <= 1000000) sum[6] += now;
? ? }
? ? for(int i = 0 ;i <= 6 ;i ++)
? ? printf("%d**\n" ,sum[i]);
? ? getchar();
? ? return 0; ??
}
AC
#include<stdio.h>
int main ()
{
? ? int t ,n;
? ? scanf("%d" ,&t);
? ? while(t--)
? ? {
? ? ? ? ?scanf("%d" ,&n);
? ? ? ? ?if(n == 0)printf("%d\n" ,1);
? ? ? ? ?if(n == 1)printf("%d\n" ,9);
? ? ? ? ?if(n == 2)printf("%d\n" ,18);
? ? ? ? ?if(n == 3)printf("%d\n" ,54);
? ? ? ? ?if(n == 4)printf("%d\n" ,90);
? ? ? ? ?if(n == 5)printf("%d\n" ,174);
? ? ? ? ?if(n == 6)printf("%d\n" ,258);
? ?}
? ?return 0; ??
}
? ?
? ?
? ?
? ?
? ?
? ?
? ? ? 求區(qū)間逆序數(shù)的個數(shù),逆序數(shù)增加了個要求就是必須要是先升序在降序例如12321或者123321這樣的.
思路:
? ? ? ?水題直接寫就行了,數(shù)據(jù)范圍不大,估計直接求也不會超時,我看見詢問只有7種情況,直接打表了,下面給出打表代碼和ac代碼。
打表
#include<stdio.h>
#include<string.h>
int jude(int now)
{
? ?int num[10] ,nowid = 0;
? ?while(now)
? ?{
? ? ? num[++nowid] = now % 10;
? ? ? now /= 10;
? ?}
? ?int tt = nowid / 2 + nowid % 2;
? ?for(int i = 1 ;i < tt ;i ++)
? ?if(num[i] >= num[i+1]) return 0;
? ?for(int i = 1 ;i <= nowid / 2 ;i ++)
? ?if(num[i] != num[nowid-i+1]) return 0;
? ?return 1;
}
int main ()
{
? ? int sum[8];
? ? memset(sum ,0 ,sizeof(sum));
? ? sum[0] = 1;
? ? for(int i = 1 ;i <= 1000000 ;i ++)
? ? {
? ? ? ? ?int now = jude(i);
? ? ? ? ?if(now && i <= 1000) printf("%d*\n" ,i);
? ? ? ? ?if(i <= 10) sum[1] += now;
? ? ? ? ?if(i <= 100) sum[2] += now;
? ? ? ? ?if(i <= 1000) sum[3] += now;
? ? ? ? ?if(i <= 10000) sum[4] += now;
? ? ? ? ?if(i <= 100000) sum[5] += now;
? ? ? ? ?if(i <= 1000000) sum[6] += now;
? ? }
? ? for(int i = 0 ;i <= 6 ;i ++)
? ? printf("%d**\n" ,sum[i]);
? ? getchar();
? ? return 0; ??
}
AC
#include<stdio.h>
int main ()
{
? ? int t ,n;
? ? scanf("%d" ,&t);
? ? while(t--)
? ? {
? ? ? ? ?scanf("%d" ,&n);
? ? ? ? ?if(n == 0)printf("%d\n" ,1);
? ? ? ? ?if(n == 1)printf("%d\n" ,9);
? ? ? ? ?if(n == 2)printf("%d\n" ,18);
? ? ? ? ?if(n == 3)printf("%d\n" ,54);
? ? ? ? ?if(n == 4)printf("%d\n" ,90);
? ? ? ? ?if(n == 5)printf("%d\n" ,174);
? ? ? ? ?if(n == 6)printf("%d\n" ,258);
? ?}
? ?return 0; ??
}
? ?
? ?
? ?
? ?
? ?
? ?
總結(jié)
以上是生活随笔為你收集整理的hdu5062 简单题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 5063 不错的小想法题(逆向处
- 下一篇: Known Notation 39届亚洲