| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2038 人关注过本帖, 1 人收藏
标题:素数伴侣和字符串的两个问题
只看楼主 加入收藏
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
结帖率:90.91%
收藏(1)
已结贴  问题点数:40 回复次数:23 
素数伴侣和字符串的两个问题
给定两个字符串a和b,定义式子a*b表示两个字符串的连接。例如a=“abc”,b=“def”,则a*b=“abcdef”。如果将连接看成乘法,则按照普遍的方法,一个非负整数的幂表示为:a0=“”(the empty string),
a(n+1)=a*(an)。
输入
输入字符串s,每组样例一行,s为可打印字符。s的长度在1—1000000之间。最后一组数据后为句号(.)。
 输出
每个字符串s输出最大的n满足s=an,其中a为任意字符串。
输入样例                              输出样例
   abcd                                  1
   aaaa                                  4
   ababab                                3                  
四、 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。
输入
输入文件的第一行有一个正偶数N(N≤200),表示待挑选的自然数的个数。第二行给出N个不超过30000的正整数,相邻的两个数之间用一个空格分开。
输出
对每个正整数,输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。
输入样例                              输出样例
4                                        2
2    5  6  13                                             


[ 本帖最后由 hjywyj 于 2011-6-8 10:04 编辑 ]
搜索更多相关主题的帖子: 字符串 
2011-06-08 09:50
爱你521226
Rank: 2
等 级:论坛游民
帖 子:25
专家分:34
注 册:2011-3-31
收藏
得分:8 
?????
2011-06-08 10:19
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
高手帮个忙好吗?
2011-06-08 10:44
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:8 
这个贴有意思,先标记
2011-06-08 10:50
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
// 第一个问题
#include <stdio.h>
#include <string.h>

int main() {
    char s[1000000] = {0}, * a;
    int i, l;
    gets(s);
    while(strcmp(s, ".")) {
        l = strlen(s);
        printf("%c", s[l - 1]);
        for (i = 1; i <= l / 2; i++) {
            if (l % i == 0) {
                for (a = s + i; a < s + l && !memcmp(s, a, i); a += i);
                if (a == s + l) {
                    printf("%d\n", l / i);
                    break;
                }
            }
        }
        if (i > l / 2) {
            printf("1\n");
        }
        gets(s);
    }
    return 0;
}


第二个比较难,还需要再想想
2011-06-08 14:49
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:8 
确实有点难度.......

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2011-06-08 15:25
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
以下是引用ouyangouyang在2011-6-8 15:25:57的发言:

确实有点难度.......
从网上找的,貌似是国信蓝点杯的试题
2011-06-08 15:41
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
第二个其实挺难得,是寻找最大独立集,NP 问题呢
2011-06-08 18:04
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:8 
程序代码:
#include <cstdio>
#include <algorithm>
#include <cmath>
#define MAX_SIZE 100

int is_primer(int n) {
    int i, j = (int)sqrt(n), k = n < 2 ? 0 : 1;
    for(i = 2; i <= j && k; i++)
        (n % i) || (k = 0);
    return k;
}

int primer_partner(int x, int y) {
    return x < 1 || y < 1 ? 0 : is_primer(x + y);
}

int main(void) {
    using std::next_permutation;
    int n, test[MAX_SIZE], i, j, max = 0;
    if(scanf("%d", &n) && (n % 2) || (n > MAX_SIZE) || (n < 2)) {
        printf("Unsupported operation!\n");
        return 1;
    }
    for(i = 0; i < n; i++)
        scanf("%d", test + i);
    while(next_permutation(test, test + n)) {
        j = 0;
        for(i = 0; i < n; i += 2)
            primer_partner(test[i], test[i + 1]) && j++;
        (max < j) && (max = j);
    }
    printf("%d\n", max);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

恩,第一题我看不懂,但第二题看懂了。举出所有全排列来分别比较,由于我不会全排列算法,所以这里用了STL里的next_permutation,这里要感谢老杨,谢谢他告诉我这个方法,上面代码请用C++编译器编译。


[ 本帖最后由 lz1091914999 于 2011-6-8 19:07 编辑 ]

My life is brilliant
2011-06-08 18:48
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 9楼 lz1091914999
这个,要是 200 个数字呢,你的算法要运行多久
200!种排列 ...

[ 本帖最后由 voidx 于 2011-6-8 19:00 编辑 ]
2011-06-08 18:59
快速回复:素数伴侣和字符串的两个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024509 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved